* [PATCH 0/5] drm/{i915,xe}: move bo stuff to parent interface
@ 2026-03-11 14:18 Jani Nikula
2026-03-11 14:18 ` [PATCH 1/5] drm/i915: move i915 specific bo implementation to i915 Jani Nikula
` (6 more replies)
0 siblings, 7 replies; 17+ messages in thread
From: Jani Nikula @ 2026-03-11 14:18 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Jani Nikula (5):
drm/i915: move i915 specific bo implementation to i915
drm/xe: rename intel_bo.c to xe_display_bo.c
drm/{i915,xe}/bo: move display bo calls to parent interface
drm/i915/fb: make intel_fb_bo.c less dependent on display
drm/{i915,xe}: move framebuffer bo to parent interface
drivers/gpu/drm/i915/Makefile | 2 +-
drivers/gpu/drm/i915/display/intel_bo.c | 66 ++++++--
drivers/gpu/drm/i915/display/intel_bo.h | 9 +
drivers/gpu/drm/i915/display/intel_fb.c | 12 +-
drivers/gpu/drm/i915/display/intel_fb_bo.c | 101 ------------
drivers/gpu/drm/i915/display/intel_fb_bo.h | 25 ---
drivers/gpu/drm/i915/i915_bo.c | 156 ++++++++++++++++++
drivers/gpu/drm/i915/i915_bo.h | 9 +
drivers/gpu/drm/i915/i915_driver.c | 2 +
drivers/gpu/drm/xe/Makefile | 4 +-
drivers/gpu/drm/xe/display/intel_bo.c | 53 ------
drivers/gpu/drm/xe/display/xe_display.c | 2 +
.../{intel_fb_bo.c => xe_display_bo.c} | 63 ++++---
drivers/gpu/drm/xe/display/xe_display_bo.h | 9 +
include/drm/intel/display_parent_interface.h | 22 +++
15 files changed, 311 insertions(+), 224 deletions(-)
delete mode 100644 drivers/gpu/drm/i915/display/intel_fb_bo.c
delete mode 100644 drivers/gpu/drm/i915/display/intel_fb_bo.h
create mode 100644 drivers/gpu/drm/i915/i915_bo.c
create mode 100644 drivers/gpu/drm/i915/i915_bo.h
delete mode 100644 drivers/gpu/drm/xe/display/intel_bo.c
rename drivers/gpu/drm/xe/display/{intel_fb_bo.c => xe_display_bo.c} (57%)
create mode 100644 drivers/gpu/drm/xe/display/xe_display_bo.h
--
2.47.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/5] drm/i915: move i915 specific bo implementation to i915
2026-03-11 14:18 [PATCH 0/5] drm/{i915,xe}: move bo stuff to parent interface Jani Nikula
@ 2026-03-11 14:18 ` Jani Nikula
2026-03-12 3:39 ` Kandpal, Suraj
2026-03-11 14:18 ` [PATCH 2/5] drm/xe: rename intel_bo.c to xe_display_bo.c Jani Nikula
` (5 subsequent siblings)
6 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2026-03-11 14:18 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
The bo interface implementation is different for both i915 and xe. Move
the i915 specific implementation from display to i915 core.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/Makefile | 2 +-
drivers/gpu/drm/i915/{display/intel_bo.c => i915_bo.c} | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
rename drivers/gpu/drm/i915/{display/intel_bo.c => i915_bo.c} (97%)
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 7e9d9b666511..52a82608b8b1 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -76,6 +76,7 @@ i915-$(CONFIG_PERF_EVENTS) += \
# core display adaptation
i915-y += \
+ i915_bo.o \
i915_display_pc8.o \
i915_dpt.o \
i915_dsb_buffer.o \
@@ -239,7 +240,6 @@ i915-y += \
display/intel_atomic.o \
display/intel_audio.o \
display/intel_bios.o \
- display/intel_bo.o \
display/intel_bw.o \
display/intel_casf.o \
display/intel_cdclk.o \
diff --git a/drivers/gpu/drm/i915/display/intel_bo.c b/drivers/gpu/drm/i915/i915_bo.c
similarity index 97%
rename from drivers/gpu/drm/i915/display/intel_bo.c
rename to drivers/gpu/drm/i915/i915_bo.c
index 2b6eaec351d8..21a4533ba341 100644
--- a/drivers/gpu/drm/i915/display/intel_bo.c
+++ b/drivers/gpu/drm/i915/i915_bo.c
@@ -3,12 +3,13 @@
#include <drm/drm_panic.h>
+#include "display/intel_bo.h"
+
#include "gem/i915_gem_mman.h"
#include "gem/i915_gem_object.h"
#include "gem/i915_gem_object_frontbuffer.h"
#include "pxp/intel_pxp.h"
#include "i915_debugfs.h"
-#include "intel_bo.h"
bool intel_bo_is_tiled(struct drm_gem_object *obj)
{
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/5] drm/xe: rename intel_bo.c to xe_display_bo.c
2026-03-11 14:18 [PATCH 0/5] drm/{i915,xe}: move bo stuff to parent interface Jani Nikula
2026-03-11 14:18 ` [PATCH 1/5] drm/i915: move i915 specific bo implementation to i915 Jani Nikula
@ 2026-03-11 14:18 ` Jani Nikula
2026-03-12 3:40 ` Kandpal, Suraj
2026-03-11 14:18 ` [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to parent interface Jani Nikula
` (4 subsequent siblings)
6 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2026-03-11 14:18 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Follow the xe_ prefixed file naming in xe. With xe_bo.[ch] already being
a thing in xe core, use xe_display_bo.c.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/xe/Makefile | 2 +-
drivers/gpu/drm/xe/display/{intel_bo.c => xe_display_bo.c} | 0
2 files changed, 1 insertion(+), 1 deletion(-)
rename drivers/gpu/drm/xe/display/{intel_bo.c => xe_display_bo.c} (100%)
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 50608312bc66..aeede4423680 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -211,10 +211,10 @@ $(obj)/i915-display/%.o: $(srctree)/drivers/gpu/drm/i915/display/%.c FORCE
# Display code specific to xe
xe-$(CONFIG_DRM_XE_DISPLAY) += \
- display/intel_bo.o \
display/intel_fb_bo.o \
display/intel_fbdev_fb.o \
display/xe_display.o \
+ display/xe_display_bo.o \
display/xe_display_pcode.o \
display/xe_display_rpm.o \
display/xe_display_wa.o \
diff --git a/drivers/gpu/drm/xe/display/intel_bo.c b/drivers/gpu/drm/xe/display/xe_display_bo.c
similarity index 100%
rename from drivers/gpu/drm/xe/display/intel_bo.c
rename to drivers/gpu/drm/xe/display/xe_display_bo.c
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to parent interface
2026-03-11 14:18 [PATCH 0/5] drm/{i915,xe}: move bo stuff to parent interface Jani Nikula
2026-03-11 14:18 ` [PATCH 1/5] drm/i915: move i915 specific bo implementation to i915 Jani Nikula
2026-03-11 14:18 ` [PATCH 2/5] drm/xe: rename intel_bo.c to xe_display_bo.c Jani Nikula
@ 2026-03-11 14:18 ` Jani Nikula
2026-03-12 3:47 ` Kandpal, Suraj
2026-03-11 14:18 ` [PATCH 4/5] drm/i915/fb: make intel_fb_bo.c less dependent on display Jani Nikula
` (3 subsequent siblings)
6 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2026-03-11 14:18 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Continue i915 and xe separation from display by moving the bo calls to
the display parent interface. Instead of adding all these functions to
intel_parent.[ch], reuse the now vacated intel_bo.[ch], and avoid mass
renames to calls of these functions. This is similar to
intel_display_rpm.[ch].
Make many of the hooks optional to avoid having to implement dummy
functions in xe. Indeed now we can remove many of the existing dummy
functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/Makefile | 1 +
drivers/gpu/drm/i915/display/intel_bo.c | 66 ++++++++++++++++++++
drivers/gpu/drm/i915/i915_bo.c | 32 +++++++---
drivers/gpu/drm/i915/i915_bo.h | 9 +++
drivers/gpu/drm/i915/i915_driver.c | 2 +
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/display/xe_display.c | 2 +
drivers/gpu/drm/xe/display/xe_display_bo.c | 45 +++----------
drivers/gpu/drm/xe/display/xe_display_bo.h | 9 +++
include/drm/intel/display_parent_interface.h | 16 +++++
10 files changed, 138 insertions(+), 45 deletions(-)
create mode 100644 drivers/gpu/drm/i915/display/intel_bo.c
create mode 100644 drivers/gpu/drm/i915/i915_bo.h
create mode 100644 drivers/gpu/drm/xe/display/xe_display_bo.h
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 52a82608b8b1..425933fb26a5 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -240,6 +240,7 @@ i915-y += \
display/intel_atomic.o \
display/intel_audio.o \
display/intel_bios.o \
+ display/intel_bo.o \
display/intel_bw.o \
display/intel_casf.o \
display/intel_cdclk.o \
diff --git a/drivers/gpu/drm/i915/display/intel_bo.c b/drivers/gpu/drm/i915/display/intel_bo.c
new file mode 100644
index 000000000000..e356ab4e0640
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_bo.c
@@ -0,0 +1,66 @@
+// SPDX-License-Identifier: MIT
+/* Copyright © 2026 Intel Corporation */
+
+#include <drm/drm_gem.h>
+#include <drm/intel/display_parent_interface.h>
+
+#include "intel_bo.h"
+#include "intel_display_core.h"
+#include "intel_display_types.h"
+
+bool intel_bo_is_tiled(struct drm_gem_object *obj)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ return display->parent->bo->is_tiled && display->parent->bo->is_tiled(obj);
+}
+
+bool intel_bo_is_userptr(struct drm_gem_object *obj)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ return display->parent->bo->is_userptr && display->parent->bo->is_userptr(obj);
+}
+
+bool intel_bo_is_shmem(struct drm_gem_object *obj)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ return display->parent->bo->is_shmem && display->parent->bo->is_shmem(obj);
+}
+
+bool intel_bo_is_protected(struct drm_gem_object *obj)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ return display->parent->bo->is_protected(obj);
+}
+
+int intel_bo_key_check(struct drm_gem_object *obj)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ return display->parent->bo->key_check(obj);
+}
+
+int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ return display->parent->bo->fb_mmap(obj, vma);
+}
+
+int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ return display->parent->bo->read_from_page(obj, offset, dst, size);
+}
+
+void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ if (display->parent->bo->describe)
+ display->parent->bo->describe(m, obj);
+}
diff --git a/drivers/gpu/drm/i915/i915_bo.c b/drivers/gpu/drm/i915/i915_bo.c
index 21a4533ba341..04fc0e3b7ef6 100644
--- a/drivers/gpu/drm/i915/i915_bo.c
+++ b/drivers/gpu/drm/i915/i915_bo.c
@@ -2,51 +2,63 @@
/* Copyright © 2024 Intel Corporation */
#include <drm/drm_panic.h>
-
-#include "display/intel_bo.h"
+#include <drm/intel/display_parent_interface.h>
#include "gem/i915_gem_mman.h"
#include "gem/i915_gem_object.h"
#include "gem/i915_gem_object_frontbuffer.h"
#include "pxp/intel_pxp.h"
+
+#include "i915_bo.h"
#include "i915_debugfs.h"
-bool intel_bo_is_tiled(struct drm_gem_object *obj)
+static bool i915_bo_is_tiled(struct drm_gem_object *obj)
{
return i915_gem_object_is_tiled(to_intel_bo(obj));
}
-bool intel_bo_is_userptr(struct drm_gem_object *obj)
+static bool i915_bo_is_userptr(struct drm_gem_object *obj)
{
return i915_gem_object_is_userptr(to_intel_bo(obj));
}
-bool intel_bo_is_shmem(struct drm_gem_object *obj)
+static bool i915_bo_is_shmem(struct drm_gem_object *obj)
{
return i915_gem_object_is_shmem(to_intel_bo(obj));
}
-bool intel_bo_is_protected(struct drm_gem_object *obj)
+static bool i915_bo_is_protected(struct drm_gem_object *obj)
{
return i915_gem_object_is_protected(to_intel_bo(obj));
}
-int intel_bo_key_check(struct drm_gem_object *obj)
+static int i915_bo_key_check(struct drm_gem_object *obj)
{
return intel_pxp_key_check(obj, false);
}
-int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int i915_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
{
return i915_gem_fb_mmap(to_intel_bo(obj), vma);
}
-int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size)
+static int i915_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size)
{
return i915_gem_object_read_from_page(to_intel_bo(obj), offset, dst, size);
}
-void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
+static void i915_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
{
i915_debugfs_describe_obj(m, to_intel_bo(obj));
}
+
+const struct intel_display_bo_interface i915_display_bo_interface = {
+ .is_tiled = i915_bo_is_tiled,
+ .is_userptr = i915_bo_is_userptr,
+ .is_shmem = i915_bo_is_shmem,
+ .is_protected = i915_bo_is_protected,
+ .key_check = i915_bo_key_check,
+ .fb_mmap = i915_bo_fb_mmap,
+ .read_from_page = i915_bo_read_from_page,
+ .describe = i915_bo_describe,
+};
diff --git a/drivers/gpu/drm/i915/i915_bo.h b/drivers/gpu/drm/i915/i915_bo.h
new file mode 100644
index 000000000000..57255d052dd9
--- /dev/null
+++ b/drivers/gpu/drm/i915/i915_bo.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: MIT */
+/* Copyright © 2026 Intel Corporation */
+
+#ifndef __I915_BO_H__
+#define __I915_BO_H__
+
+extern const struct intel_display_bo_interface i915_display_bo_interface;
+
+#endif /* __I915_BO_H__ */
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index 7a8c59a8c865..385a634c3ed0 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -90,6 +90,7 @@
#include "pxp/intel_pxp_debugfs.h"
#include "pxp/intel_pxp_pm.h"
+#include "i915_bo.h"
#include "i915_debugfs.h"
#include "i915_display_pc8.h"
#include "i915_dpt.h"
@@ -765,6 +766,7 @@ static bool vgpu_active(struct drm_device *drm)
}
static const struct intel_display_parent_interface parent = {
+ .bo = &i915_display_bo_interface,
.dpt = &i915_display_dpt_interface,
.dsb = &i915_display_dsb_interface,
.frontbuffer = &i915_display_frontbuffer_interface,
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index aeede4423680..b16ed1ce2a85 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -235,6 +235,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
i915-display/intel_audio.o \
i915-display/intel_backlight.o \
i915-display/intel_bios.o \
+ i915-display/intel_bo.o \
i915-display/intel_bw.o \
i915-display/intel_casf.o \
i915-display/intel_cdclk.o \
diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
index f1e1889a52d3..49b6f98e7391 100644
--- a/drivers/gpu/drm/xe/display/xe_display.c
+++ b/drivers/gpu/drm/xe/display/xe_display.c
@@ -35,6 +35,7 @@
#include "intel_hotplug.h"
#include "intel_opregion.h"
#include "skl_watermark.h"
+#include "xe_display_bo.h"
#include "xe_display_pcode.h"
#include "xe_display_rpm.h"
#include "xe_dsb_buffer.h"
@@ -541,6 +542,7 @@ static const struct intel_display_irq_interface xe_display_irq_interface = {
};
static const struct intel_display_parent_interface parent = {
+ .bo = &xe_display_bo_interface,
.dsb = &xe_display_dsb_interface,
.frontbuffer = &xe_display_frontbuffer_interface,
.hdcp = &xe_display_hdcp_interface,
diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c b/drivers/gpu/drm/xe/display/xe_display_bo.c
index fa1f2c796b81..a53ba3f247ec 100644
--- a/drivers/gpu/drm/xe/display/xe_display_bo.c
+++ b/drivers/gpu/drm/xe/display/xe_display_bo.c
@@ -2,52 +2,27 @@
/* Copyright © 2024 Intel Corporation */
#include <drm/drm_gem.h>
+#include <drm/intel/display_parent_interface.h>
-#include "intel_bo.h"
-#include "intel_frontbuffer.h"
#include "xe_bo.h"
+#include "xe_display_bo.h"
#include "xe_pxp.h"
-bool intel_bo_is_tiled(struct drm_gem_object *obj)
-{
- /* legacy tiling is unused */
- return false;
-}
-
-bool intel_bo_is_userptr(struct drm_gem_object *obj)
-{
- /* xe does not have userptr bos */
- return false;
-}
-
-bool intel_bo_is_shmem(struct drm_gem_object *obj)
-{
- return false;
-}
-
-bool intel_bo_is_protected(struct drm_gem_object *obj)
+static bool xe_display_bo_is_protected(struct drm_gem_object *obj)
{
return xe_bo_is_protected(gem_to_xe_bo(obj));
}
-int intel_bo_key_check(struct drm_gem_object *obj)
-{
- return xe_pxp_obj_key_check(obj);
-}
-
-int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
-{
- return drm_gem_prime_mmap(obj, vma);
-}
-
-int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size)
+static int xe_display_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size)
{
struct xe_bo *bo = gem_to_xe_bo(obj);
return xe_bo_read(bo, offset, dst, size);
}
-void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
-{
- /* FIXME */
-}
+const struct intel_display_bo_interface xe_display_bo_interface = {
+ .is_protected = xe_display_bo_is_protected,
+ .key_check = xe_pxp_obj_key_check,
+ .fb_mmap = drm_gem_prime_mmap,
+ .read_from_page = xe_display_bo_read_from_page,
+};
diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.h b/drivers/gpu/drm/xe/display/xe_display_bo.h
new file mode 100644
index 000000000000..6879c104b0b1
--- /dev/null
+++ b/drivers/gpu/drm/xe/display/xe_display_bo.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: MIT */
+/* Copyright © 2026 Intel Corporation */
+
+#ifndef __XE_DISPLAY_BO_H__
+#define __XE_DISPLAY_BO_H__
+
+extern const struct intel_display_bo_interface xe_display_bo_interface;
+
+#endif
diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h
index c044472b9400..2b53d12b0e0a 100644
--- a/include/drm/intel/display_parent_interface.h
+++ b/include/drm/intel/display_parent_interface.h
@@ -23,9 +23,22 @@ struct intel_initial_plane_config;
struct intel_panic;
struct intel_stolen_node;
struct ref_tracker;
+struct seq_file;
+struct vm_area_struct;
/* Keep struct definitions sorted */
+struct intel_display_bo_interface {
+ bool (*is_tiled)(struct drm_gem_object *obj); /* Optional */
+ bool (*is_userptr)(struct drm_gem_object *obj); /* Optional */
+ bool (*is_shmem)(struct drm_gem_object *obj); /* Optional */
+ bool (*is_protected)(struct drm_gem_object *obj);
+ int (*key_check)(struct drm_gem_object *obj);
+ int (*fb_mmap)(struct drm_gem_object *obj, struct vm_area_struct *vma);
+ int (*read_from_page)(struct drm_gem_object *obj, u64 offset, void *dst, int size);
+ void (*describe)(struct seq_file *m, struct drm_gem_object *obj); /* Optional */
+};
+
struct intel_display_dpt_interface {
struct intel_dpt *(*create)(struct drm_gem_object *obj, size_t size);
void (*destroy)(struct intel_dpt *dpt);
@@ -174,6 +187,9 @@ struct intel_display_vma_interface {
* check the optional pointers.
*/
struct intel_display_parent_interface {
+ /** @bo: BO interface */
+ const struct intel_display_bo_interface *bo;
+
/** @dpt: DPT interface. Optional. */
const struct intel_display_dpt_interface *dpt;
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 4/5] drm/i915/fb: make intel_fb_bo.c less dependent on display
2026-03-11 14:18 [PATCH 0/5] drm/{i915,xe}: move bo stuff to parent interface Jani Nikula
` (2 preceding siblings ...)
2026-03-11 14:18 ` [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to parent interface Jani Nikula
@ 2026-03-11 14:18 ` Jani Nikula
2026-03-12 3:51 ` Kandpal, Suraj
2026-03-11 14:18 ` [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent interface Jani Nikula
` (2 subsequent siblings)
6 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2026-03-11 14:18 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
intel_fb_bo.c is i915 core specific code, and should use struct
drm_i915_private instead of struct intel_display.
Switch one DISPLAY_VER() to GRAPHICS_VER(). The check is for < 4, where
they're effectively the same thing.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_fb_bo.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.c b/drivers/gpu/drm/i915/display/intel_fb_bo.c
index bfecd73d5fa0..a4d49ef450d9 100644
--- a/drivers/gpu/drm/i915/display/intel_fb_bo.c
+++ b/drivers/gpu/drm/i915/display/intel_fb_bo.c
@@ -9,8 +9,6 @@
#include "gem/i915_gem_object.h"
#include "i915_drv.h"
-#include "intel_display_core.h"
-#include "intel_display_types.h"
#include "intel_fb.h"
#include "intel_fb_bo.h"
@@ -23,7 +21,7 @@ int intel_fb_bo_framebuffer_init(struct drm_gem_object *_obj,
struct drm_mode_fb_cmd2 *mode_cmd)
{
struct drm_i915_gem_object *obj = to_intel_bo(_obj);
- struct intel_display *display = to_intel_display(obj->base.dev);
+ struct drm_i915_private *i915 = to_i915(obj->base.dev);
unsigned int tiling, stride;
i915_gem_object_lock(obj, NULL);
@@ -38,7 +36,7 @@ int intel_fb_bo_framebuffer_init(struct drm_gem_object *_obj,
*/
if (tiling != I915_TILING_NONE &&
tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
- drm_dbg_kms(display->drm,
+ drm_dbg_kms(&i915->drm,
"tiling_mode doesn't match fb modifier\n");
return -EINVAL;
}
@@ -46,7 +44,7 @@ int intel_fb_bo_framebuffer_init(struct drm_gem_object *_obj,
if (tiling == I915_TILING_X) {
mode_cmd->modifier[0] = I915_FORMAT_MOD_X_TILED;
} else if (tiling == I915_TILING_Y) {
- drm_dbg_kms(display->drm,
+ drm_dbg_kms(&i915->drm,
"No Y tiling for legacy addfb\n");
return -EINVAL;
}
@@ -56,9 +54,9 @@ int intel_fb_bo_framebuffer_init(struct drm_gem_object *_obj,
* gen2/3 display engine uses the fence if present,
* so the tiling mode must match the fb modifier exactly.
*/
- if (DISPLAY_VER(display) < 4 &&
+ if (GRAPHICS_VER(i915) < 4 &&
tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
- drm_dbg_kms(display->drm,
+ drm_dbg_kms(&i915->drm,
"tiling_mode must match fb modifier exactly on gen2/3\n");
return -EINVAL;
}
@@ -68,7 +66,7 @@ int intel_fb_bo_framebuffer_init(struct drm_gem_object *_obj,
* the fb pitch and fence stride match.
*/
if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
- drm_dbg_kms(display->drm,
+ drm_dbg_kms(&i915->drm,
"pitch (%d) must match tiling stride (%d)\n",
mode_cmd->pitches[0], stride);
return -EINVAL;
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent interface
2026-03-11 14:18 [PATCH 0/5] drm/{i915,xe}: move bo stuff to parent interface Jani Nikula
` (3 preceding siblings ...)
2026-03-11 14:18 ` [PATCH 4/5] drm/i915/fb: make intel_fb_bo.c less dependent on display Jani Nikula
@ 2026-03-11 14:18 ` Jani Nikula
2026-03-12 4:25 ` Kandpal, Suraj
2026-03-11 15:33 ` ✓ i915.CI.BAT: success for drm/{i915,xe}: move bo stuff " Patchwork
2026-03-12 6:37 ` ✓ i915.CI.Full: " Patchwork
6 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2026-03-11 14:18 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Add .framebuffer_init, .framebuffer_fini and .framebuffer_lookup to the
bo parent interface. While they're about framebuffers, they're
specifically about framebuffer objects, so the bo interface is a good
enough fit, and there's no need to add another interface struct.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/Makefile | 1 -
drivers/gpu/drm/i915/display/intel_bo.c | 21 +++++
drivers/gpu/drm/i915/display/intel_bo.h | 9 ++
drivers/gpu/drm/i915/display/intel_fb.c | 12 +--
drivers/gpu/drm/i915/display/intel_fb_bo.c | 99 --------------------
drivers/gpu/drm/i915/display/intel_fb_bo.h | 25 -----
drivers/gpu/drm/i915/i915_bo.c | 92 ++++++++++++++++++
drivers/gpu/drm/xe/Makefile | 1 -
drivers/gpu/drm/xe/display/intel_fb_bo.c | 91 ------------------
drivers/gpu/drm/xe/display/xe_display_bo.c | 84 +++++++++++++++++
include/drm/intel/display_parent_interface.h | 6 ++
11 files changed, 218 insertions(+), 223 deletions(-)
delete mode 100644 drivers/gpu/drm/i915/display/intel_fb_bo.c
delete mode 100644 drivers/gpu/drm/i915/display/intel_fb_bo.h
delete mode 100644 drivers/gpu/drm/xe/display/intel_fb_bo.c
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 425933fb26a5..be976a90c5a6 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -278,7 +278,6 @@ i915-y += \
display/intel_drrs.o \
display/intel_dsb.o \
display/intel_fb.o \
- display/intel_fb_bo.o \
display/intel_fb_pin.o \
display/intel_fbc.o \
display/intel_fdi.o \
diff --git a/drivers/gpu/drm/i915/display/intel_bo.c b/drivers/gpu/drm/i915/display/intel_bo.c
index e356ab4e0640..3b82d38a0504 100644
--- a/drivers/gpu/drm/i915/display/intel_bo.c
+++ b/drivers/gpu/drm/i915/display/intel_bo.c
@@ -64,3 +64,24 @@ void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
if (display->parent->bo->describe)
display->parent->bo->describe(m, obj);
}
+
+int intel_bo_framebuffer_init(struct drm_gem_object *obj, struct drm_mode_fb_cmd2 *mode_cmd)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ return display->parent->bo->framebuffer_init(obj, mode_cmd);
+}
+
+void intel_bo_framebuffer_fini(struct drm_gem_object *obj)
+{
+ struct intel_display *display = to_intel_display(obj->dev);
+
+ display->parent->bo->framebuffer_fini(obj);
+}
+
+struct drm_gem_object *intel_bo_framebuffer_lookup(struct intel_display *display,
+ struct drm_file *filp,
+ const struct drm_mode_fb_cmd2 *user_mode_cmd)
+{
+ return display->parent->bo->framebuffer_lookup(display->drm, filp, user_mode_cmd);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_bo.h b/drivers/gpu/drm/i915/display/intel_bo.h
index 40390ed92ceb..aec188c706c2 100644
--- a/drivers/gpu/drm/i915/display/intel_bo.h
+++ b/drivers/gpu/drm/i915/display/intel_bo.h
@@ -6,8 +6,11 @@
#include <linux/types.h>
+struct drm_file;
struct drm_gem_object;
+struct drm_mode_fb_cmd2;
struct drm_scanout_buffer;
+struct intel_display;
struct intel_framebuffer;
struct seq_file;
struct vm_area_struct;
@@ -22,4 +25,10 @@ int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, i
void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj);
+void intel_bo_framebuffer_fini(struct drm_gem_object *obj);
+int intel_bo_framebuffer_init(struct drm_gem_object *obj, struct drm_mode_fb_cmd2 *mode_cmd);
+struct drm_gem_object *intel_bo_framebuffer_lookup(struct intel_display *display,
+ struct drm_file *filp,
+ const struct drm_mode_fb_cmd2 *user_mode_cmd);
+
#endif /* __INTEL_BO__ */
diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index 49c6ca9d94c6..5768619f840f 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -17,7 +17,6 @@
#include "intel_display_types.h"
#include "intel_display_utils.h"
#include "intel_fb.h"
-#include "intel_fb_bo.h"
#include "intel_frontbuffer.h"
#include "intel_parent.h"
#include "intel_plane.h"
@@ -2111,7 +2110,7 @@ static void intel_user_framebuffer_destroy(struct drm_framebuffer *fb)
if (intel_fb_uses_dpt(fb))
intel_parent_dpt_destroy(display, intel_fb->dpt);
- intel_fb_bo_framebuffer_fini(intel_fb_bo(fb));
+ intel_bo_framebuffer_fini(intel_fb_bo(fb));
intel_parent_frontbuffer_put(display, intel_fb->frontbuffer);
@@ -2222,7 +2221,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
/*
* intel_parent_frontbuffer_get() must be done before
- * intel_fb_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
+ * intel_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
*/
intel_fb->frontbuffer = intel_parent_frontbuffer_get(display, obj);
if (!intel_fb->frontbuffer) {
@@ -2230,7 +2229,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
goto err_free_panic;
}
- ret = intel_fb_bo_framebuffer_init(obj, mode_cmd);
+ ret = intel_bo_framebuffer_init(obj, mode_cmd);
if (ret)
goto err_frontbuffer_put;
@@ -2333,7 +2332,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
if (intel_fb_uses_dpt(fb))
intel_parent_dpt_destroy(display, intel_fb->dpt);
err_bo_framebuffer_fini:
- intel_fb_bo_framebuffer_fini(obj);
+ intel_bo_framebuffer_fini(obj);
err_frontbuffer_put:
intel_parent_frontbuffer_put(display, intel_fb->frontbuffer);
err_free_panic:
@@ -2348,11 +2347,12 @@ intel_user_framebuffer_create(struct drm_device *dev,
const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *user_mode_cmd)
{
+ struct intel_display *display = to_intel_display(dev);
struct drm_framebuffer *fb;
struct drm_gem_object *obj;
struct drm_mode_fb_cmd2 mode_cmd = *user_mode_cmd;
- obj = intel_fb_bo_lookup_valid_bo(dev, filp, &mode_cmd);
+ obj = intel_bo_framebuffer_lookup(display, filp, &mode_cmd);
if (IS_ERR(obj))
return ERR_CAST(obj);
diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.c b/drivers/gpu/drm/i915/display/intel_fb_bo.c
deleted file mode 100644
index a4d49ef450d9..000000000000
--- a/drivers/gpu/drm/i915/display/intel_fb_bo.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2021 Intel Corporation
- */
-
-#include <drm/drm_framebuffer.h>
-#include <drm/drm_print.h>
-
-#include "gem/i915_gem_object.h"
-
-#include "i915_drv.h"
-#include "intel_fb.h"
-#include "intel_fb_bo.h"
-
-void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj)
-{
- /* Nothing to do for i915 */
-}
-
-int intel_fb_bo_framebuffer_init(struct drm_gem_object *_obj,
- struct drm_mode_fb_cmd2 *mode_cmd)
-{
- struct drm_i915_gem_object *obj = to_intel_bo(_obj);
- struct drm_i915_private *i915 = to_i915(obj->base.dev);
- unsigned int tiling, stride;
-
- i915_gem_object_lock(obj, NULL);
- tiling = i915_gem_object_get_tiling(obj);
- stride = i915_gem_object_get_stride(obj);
- i915_gem_object_unlock(obj);
-
- if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) {
- /*
- * If there's a fence, enforce that
- * the fb modifier and tiling mode match.
- */
- if (tiling != I915_TILING_NONE &&
- tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
- drm_dbg_kms(&i915->drm,
- "tiling_mode doesn't match fb modifier\n");
- return -EINVAL;
- }
- } else {
- if (tiling == I915_TILING_X) {
- mode_cmd->modifier[0] = I915_FORMAT_MOD_X_TILED;
- } else if (tiling == I915_TILING_Y) {
- drm_dbg_kms(&i915->drm,
- "No Y tiling for legacy addfb\n");
- return -EINVAL;
- }
- }
-
- /*
- * gen2/3 display engine uses the fence if present,
- * so the tiling mode must match the fb modifier exactly.
- */
- if (GRAPHICS_VER(i915) < 4 &&
- tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
- drm_dbg_kms(&i915->drm,
- "tiling_mode must match fb modifier exactly on gen2/3\n");
- return -EINVAL;
- }
-
- /*
- * If there's a fence, enforce that
- * the fb pitch and fence stride match.
- */
- if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
- drm_dbg_kms(&i915->drm,
- "pitch (%d) must match tiling stride (%d)\n",
- mode_cmd->pitches[0], stride);
- return -EINVAL;
- }
-
- return 0;
-}
-
-struct drm_gem_object *
-intel_fb_bo_lookup_valid_bo(struct drm_device *drm,
- struct drm_file *filp,
- const struct drm_mode_fb_cmd2 *mode_cmd)
-{
- struct drm_i915_private *i915 = to_i915(drm);
- struct drm_i915_gem_object *obj;
-
- obj = i915_gem_object_lookup(filp, mode_cmd->handles[0]);
- if (!obj)
- return ERR_PTR(-ENOENT);
-
- /* object is backed with LMEM for discrete */
- if (HAS_LMEM(i915) && !i915_gem_object_can_migrate(obj, INTEL_REGION_LMEM_0)) {
- /* object is "remote", not in local memory */
- i915_gem_object_put(obj);
- drm_dbg_kms(&i915->drm, "framebuffer must reside in local memory\n");
- return ERR_PTR(-EREMOTE);
- }
-
- return intel_bo_to_drm_bo(obj);
-}
diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.h b/drivers/gpu/drm/i915/display/intel_fb_bo.h
deleted file mode 100644
index d775773c6c03..000000000000
--- a/drivers/gpu/drm/i915/display/intel_fb_bo.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2021 Intel Corporation
- */
-
-#ifndef __INTEL_FB_BO_H__
-#define __INTEL_FB_BO_H__
-
-struct drm_device;
-struct drm_file;
-struct drm_framebuffer;
-struct drm_gem_object;
-struct drm_mode_fb_cmd2;
-
-void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj);
-
-int intel_fb_bo_framebuffer_init(struct drm_gem_object *obj,
- struct drm_mode_fb_cmd2 *mode_cmd);
-
-struct drm_gem_object *
-intel_fb_bo_lookup_valid_bo(struct drm_device *drm,
- struct drm_file *filp,
- const struct drm_mode_fb_cmd2 *user_mode_cmd);
-
-#endif
diff --git a/drivers/gpu/drm/i915/i915_bo.c b/drivers/gpu/drm/i915/i915_bo.c
index 04fc0e3b7ef6..1789f7cab05c 100644
--- a/drivers/gpu/drm/i915/i915_bo.c
+++ b/drivers/gpu/drm/i915/i915_bo.c
@@ -2,8 +2,10 @@
/* Copyright © 2024 Intel Corporation */
#include <drm/drm_panic.h>
+#include <drm/drm_print.h>
#include <drm/intel/display_parent_interface.h>
+#include "display/intel_fb.h"
#include "gem/i915_gem_mman.h"
#include "gem/i915_gem_object.h"
#include "gem/i915_gem_object_frontbuffer.h"
@@ -11,6 +13,7 @@
#include "i915_bo.h"
#include "i915_debugfs.h"
+#include "i915_drv.h"
static bool i915_bo_is_tiled(struct drm_gem_object *obj)
{
@@ -52,6 +55,92 @@ static void i915_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
i915_debugfs_describe_obj(m, to_intel_bo(obj));
}
+static int i915_bo_framebuffer_init(struct drm_gem_object *_obj,
+ struct drm_mode_fb_cmd2 *mode_cmd)
+{
+ struct drm_i915_gem_object *obj = to_intel_bo(_obj);
+ struct drm_i915_private *i915 = to_i915(obj->base.dev);
+ unsigned int tiling, stride;
+
+ i915_gem_object_lock(obj, NULL);
+ tiling = i915_gem_object_get_tiling(obj);
+ stride = i915_gem_object_get_stride(obj);
+ i915_gem_object_unlock(obj);
+
+ if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) {
+ /*
+ * If there's a fence, enforce that
+ * the fb modifier and tiling mode match.
+ */
+ if (tiling != I915_TILING_NONE &&
+ tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
+ drm_dbg_kms(&i915->drm,
+ "tiling_mode doesn't match fb modifier\n");
+ return -EINVAL;
+ }
+ } else {
+ if (tiling == I915_TILING_X) {
+ mode_cmd->modifier[0] = I915_FORMAT_MOD_X_TILED;
+ } else if (tiling == I915_TILING_Y) {
+ drm_dbg_kms(&i915->drm,
+ "No Y tiling for legacy addfb\n");
+ return -EINVAL;
+ }
+ }
+
+ /*
+ * gen2/3 display engine uses the fence if present,
+ * so the tiling mode must match the fb modifier exactly.
+ */
+ if (GRAPHICS_VER(i915) < 4 &&
+ tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
+ drm_dbg_kms(&i915->drm,
+ "tiling_mode must match fb modifier exactly on gen2/3\n");
+ return -EINVAL;
+ }
+
+ /*
+ * If there's a fence, enforce that
+ * the fb pitch and fence stride match.
+ */
+ if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
+ drm_dbg_kms(&i915->drm,
+ "pitch (%d) must match tiling stride (%d)\n",
+ mode_cmd->pitches[0], stride);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static void i915_bo_framebuffer_fini(struct drm_gem_object *obj)
+{
+ /* Nothing to do for i915 */
+}
+
+static struct drm_gem_object *
+i915_bo_framebuffer_lookup(struct drm_device *drm,
+ struct drm_file *filp,
+ const struct drm_mode_fb_cmd2 *mode_cmd)
+{
+ struct drm_i915_private *i915 = to_i915(drm);
+ struct drm_i915_gem_object *obj;
+
+ obj = i915_gem_object_lookup(filp, mode_cmd->handles[0]);
+ if (!obj)
+ return ERR_PTR(-ENOENT);
+
+ /* object is backed with LMEM for discrete */
+ if (HAS_LMEM(i915) && !i915_gem_object_can_migrate(obj, INTEL_REGION_LMEM_0)) {
+ /* object is "remote", not in local memory */
+ i915_gem_object_put(obj);
+ drm_dbg_kms(&i915->drm, "framebuffer must reside in local memory\n");
+ return ERR_PTR(-EREMOTE);
+ }
+
+ return intel_bo_to_drm_bo(obj);
+}
+
const struct intel_display_bo_interface i915_display_bo_interface = {
.is_tiled = i915_bo_is_tiled,
.is_userptr = i915_bo_is_userptr,
@@ -61,4 +150,7 @@ const struct intel_display_bo_interface i915_display_bo_interface = {
.fb_mmap = i915_bo_fb_mmap,
.read_from_page = i915_bo_read_from_page,
.describe = i915_bo_describe,
+ .framebuffer_init = i915_bo_framebuffer_init,
+ .framebuffer_fini = i915_bo_framebuffer_fini,
+ .framebuffer_lookup = i915_bo_framebuffer_lookup,
};
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index b16ed1ce2a85..dab979287a96 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -211,7 +211,6 @@ $(obj)/i915-display/%.o: $(srctree)/drivers/gpu/drm/i915/display/%.c FORCE
# Display code specific to xe
xe-$(CONFIG_DRM_XE_DISPLAY) += \
- display/intel_fb_bo.o \
display/intel_fbdev_fb.o \
display/xe_display.o \
display/xe_display_bo.o \
diff --git a/drivers/gpu/drm/xe/display/intel_fb_bo.c b/drivers/gpu/drm/xe/display/intel_fb_bo.c
deleted file mode 100644
index db8b1a27b4de..000000000000
--- a/drivers/gpu/drm/xe/display/intel_fb_bo.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2021 Intel Corporation
- */
-
-#include <drm/drm_modeset_helper.h>
-#include <drm/ttm/ttm_bo.h>
-
-#include "intel_display_types.h"
-#include "intel_fb.h"
-#include "intel_fb_bo.h"
-#include "xe_bo.h"
-
-void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj)
-{
- struct xe_bo *bo = gem_to_xe_bo(obj);
-
- if (bo->flags & XE_BO_FLAG_PINNED) {
- /* Unpin our kernel fb first */
- xe_bo_lock(bo, false);
- xe_bo_unpin(bo);
- xe_bo_unlock(bo);
- }
- xe_bo_put(bo);
-}
-
-int intel_fb_bo_framebuffer_init(struct drm_gem_object *obj,
- struct drm_mode_fb_cmd2 *mode_cmd)
-{
- struct xe_bo *bo = gem_to_xe_bo(obj);
- struct xe_device *xe = to_xe_device(bo->ttm.base.dev);
- int ret;
-
- /*
- * Some modifiers require physical alignment of 64KiB VRAM pages;
- * require that the BO in those cases is created correctly.
- */
- if (XE_IOCTL_DBG(xe, intel_fb_needs_64k_phys(mode_cmd->modifier[0]) &&
- !(bo->flags & XE_BO_FLAG_NEEDS_64K)))
- return -EINVAL;
-
- xe_bo_get(bo);
-
- ret = ttm_bo_reserve(&bo->ttm, true, false, NULL);
- if (ret)
- goto err;
-
- if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
- /*
- * XE_BO_FLAG_SCANOUT should ideally be set at creation, or is
- * automatically set when creating FB. We cannot change caching
- * mode when the bo is VM_BINDed, so we can only set
- * coherency with display when unbound.
- */
- if (XE_IOCTL_DBG(xe, xe_bo_is_vm_bound(bo))) {
- ttm_bo_unreserve(&bo->ttm);
- ret = -EINVAL;
- goto err;
- }
- bo->flags |= XE_BO_FLAG_SCANOUT;
- }
- ttm_bo_unreserve(&bo->ttm);
- return 0;
-
-err:
- xe_bo_put(bo);
- return ret;
-}
-
-struct drm_gem_object *intel_fb_bo_lookup_valid_bo(struct drm_device *drm,
- struct drm_file *filp,
- const struct drm_mode_fb_cmd2 *mode_cmd)
-{
- struct xe_device *xe = to_xe_device(drm);
- struct xe_bo *bo;
- struct drm_gem_object *gem = drm_gem_object_lookup(filp, mode_cmd->handles[0]);
-
- if (!gem)
- return ERR_PTR(-ENOENT);
-
- bo = gem_to_xe_bo(gem);
- /* Require vram placement or dma-buf import */
- if (IS_DGFX(xe) &&
- !xe_bo_can_migrate(bo, XE_PL_VRAM0) &&
- bo->ttm.type != ttm_bo_type_sg) {
- drm_gem_object_put(gem);
- return ERR_PTR(-EREMOTE);
- }
-
- return gem;
-}
diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c b/drivers/gpu/drm/xe/display/xe_display_bo.c
index a53ba3f247ec..a689f71e7b14 100644
--- a/drivers/gpu/drm/xe/display/xe_display_bo.c
+++ b/drivers/gpu/drm/xe/display/xe_display_bo.c
@@ -4,6 +4,7 @@
#include <drm/drm_gem.h>
#include <drm/intel/display_parent_interface.h>
+#include "intel_fb.h"
#include "xe_bo.h"
#include "xe_display_bo.h"
#include "xe_pxp.h"
@@ -20,9 +21,92 @@ static int xe_display_bo_read_from_page(struct drm_gem_object *obj, u64 offset,
return xe_bo_read(bo, offset, dst, size);
}
+static int xe_display_bo_framebuffer_init(struct drm_gem_object *obj,
+ struct drm_mode_fb_cmd2 *mode_cmd)
+{
+ struct xe_bo *bo = gem_to_xe_bo(obj);
+ struct xe_device *xe = to_xe_device(bo->ttm.base.dev);
+ int ret;
+
+ /*
+ * Some modifiers require physical alignment of 64KiB VRAM pages;
+ * require that the BO in those cases is created correctly.
+ */
+ if (XE_IOCTL_DBG(xe, intel_fb_needs_64k_phys(mode_cmd->modifier[0]) &&
+ !(bo->flags & XE_BO_FLAG_NEEDS_64K)))
+ return -EINVAL;
+
+ xe_bo_get(bo);
+
+ ret = ttm_bo_reserve(&bo->ttm, true, false, NULL);
+ if (ret)
+ goto err;
+
+ if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
+ /*
+ * XE_BO_FLAG_SCANOUT should ideally be set at creation, or is
+ * automatically set when creating FB. We cannot change caching
+ * mode when the bo is VM_BINDed, so we can only set
+ * coherency with display when unbound.
+ */
+ if (XE_IOCTL_DBG(xe, xe_bo_is_vm_bound(bo))) {
+ ttm_bo_unreserve(&bo->ttm);
+ ret = -EINVAL;
+ goto err;
+ }
+ bo->flags |= XE_BO_FLAG_SCANOUT;
+ }
+ ttm_bo_unreserve(&bo->ttm);
+ return 0;
+
+err:
+ xe_bo_put(bo);
+ return ret;
+}
+
+static void xe_display_bo_framebuffer_fini(struct drm_gem_object *obj)
+{
+ struct xe_bo *bo = gem_to_xe_bo(obj);
+
+ if (bo->flags & XE_BO_FLAG_PINNED) {
+ /* Unpin our kernel fb first */
+ xe_bo_lock(bo, false);
+ xe_bo_unpin(bo);
+ xe_bo_unlock(bo);
+ }
+ xe_bo_put(bo);
+}
+
+static struct drm_gem_object *
+xe_display_bo_framebuffer_lookup(struct drm_device *drm,
+ struct drm_file *filp,
+ const struct drm_mode_fb_cmd2 *mode_cmd)
+{
+ struct xe_device *xe = to_xe_device(drm);
+ struct xe_bo *bo;
+ struct drm_gem_object *gem = drm_gem_object_lookup(filp, mode_cmd->handles[0]);
+
+ if (!gem)
+ return ERR_PTR(-ENOENT);
+
+ bo = gem_to_xe_bo(gem);
+ /* Require vram placement or dma-buf import */
+ if (IS_DGFX(xe) &&
+ !xe_bo_can_migrate(bo, XE_PL_VRAM0) &&
+ bo->ttm.type != ttm_bo_type_sg) {
+ drm_gem_object_put(gem);
+ return ERR_PTR(-EREMOTE);
+ }
+
+ return gem;
+}
+
const struct intel_display_bo_interface xe_display_bo_interface = {
.is_protected = xe_display_bo_is_protected,
.key_check = xe_pxp_obj_key_check,
.fb_mmap = drm_gem_prime_mmap,
.read_from_page = xe_display_bo_read_from_page,
+ .framebuffer_init = xe_display_bo_framebuffer_init,
+ .framebuffer_fini = xe_display_bo_framebuffer_fini,
+ .framebuffer_lookup = xe_display_bo_framebuffer_lookup,
};
diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h
index 2b53d12b0e0a..97ec94a2e749 100644
--- a/include/drm/intel/display_parent_interface.h
+++ b/include/drm/intel/display_parent_interface.h
@@ -12,6 +12,7 @@ struct drm_device;
struct drm_file;
struct drm_framebuffer;
struct drm_gem_object;
+struct drm_mode_fb_cmd2;
struct drm_plane_state;
struct drm_scanout_buffer;
struct i915_vma;
@@ -37,6 +38,11 @@ struct intel_display_bo_interface {
int (*fb_mmap)(struct drm_gem_object *obj, struct vm_area_struct *vma);
int (*read_from_page)(struct drm_gem_object *obj, u64 offset, void *dst, int size);
void (*describe)(struct seq_file *m, struct drm_gem_object *obj); /* Optional */
+ int (*framebuffer_init)(struct drm_gem_object *obj, struct drm_mode_fb_cmd2 *mode_cmd);
+ void (*framebuffer_fini)(struct drm_gem_object *obj);
+ struct drm_gem_object *(*framebuffer_lookup)(struct drm_device *drm,
+ struct drm_file *filp,
+ const struct drm_mode_fb_cmd2 *user_mode_cmd);
};
struct intel_display_dpt_interface {
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* ✓ i915.CI.BAT: success for drm/{i915,xe}: move bo stuff to parent interface
2026-03-11 14:18 [PATCH 0/5] drm/{i915,xe}: move bo stuff to parent interface Jani Nikula
` (4 preceding siblings ...)
2026-03-11 14:18 ` [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent interface Jani Nikula
@ 2026-03-11 15:33 ` Patchwork
2026-03-12 6:37 ` ✓ i915.CI.Full: " Patchwork
6 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-03-11 15:33 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 7035 bytes --]
== Series Details ==
Series: drm/{i915,xe}: move bo stuff to parent interface
URL : https://patchwork.freedesktop.org/series/163033/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_18130 -> Patchwork_163033v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/index.html
Participating hosts (39 -> 39)
------------------------------
Additional (2): bat-adlp-6 bat-adls-6
Missing (2): bat-dg2-13 fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_163033v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_lmem_swapping@parallel-random-engines:
- bat-adls-6: NOTRUN -> [SKIP][1] ([i915#4613]) +3 other tests skip
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@gem_lmem_swapping@parallel-random-engines.html
* igt@gem_lmem_swapping@random-engines:
- bat-adlp-6: NOTRUN -> [SKIP][2] ([i915#4613]) +3 other tests skip
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adlp-6/igt@gem_lmem_swapping@random-engines.html
* igt@gem_tiled_pread_basic@basic:
- bat-adlp-6: NOTRUN -> [SKIP][3] ([i915#15656])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adlp-6/igt@gem_tiled_pread_basic@basic.html
- bat-adls-6: NOTRUN -> [SKIP][4] ([i915#15656])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@gem_tiled_pread_basic@basic.html
* igt@i915_pm_rps@basic-api:
- bat-adlp-6: NOTRUN -> [SKIP][5] ([i915#6621])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adlp-6/igt@i915_pm_rps@basic-api.html
* igt@i915_selftest@live@workarounds:
- bat-arlh-2: [PASS][6] -> [DMESG-FAIL][7] ([i915#12061]) +1 other test dmesg-fail
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/bat-arlh-2/igt@i915_selftest@live@workarounds.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-arlh-2/igt@i915_selftest@live@workarounds.html
* igt@intel_hwmon@hwmon-read:
- bat-adls-6: NOTRUN -> [SKIP][8] ([i915#7707]) +1 other test skip
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@intel_hwmon@hwmon-read.html
- bat-adlp-6: NOTRUN -> [SKIP][9] ([i915#7707]) +1 other test skip
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adlp-6/igt@intel_hwmon@hwmon-read.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- bat-adls-6: NOTRUN -> [SKIP][10] ([i915#4103]) +1 other test skip
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-adlp-6: NOTRUN -> [SKIP][11] ([i915#4103]) +1 other test skip
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adlp-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_dsc@dsc-basic:
- bat-adls-6: NOTRUN -> [SKIP][12] ([i915#3555] / [i915#3840])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@kms_dsc@dsc-basic.html
* igt@kms_force_connector_basic@force-load-detect:
- bat-adls-6: NOTRUN -> [SKIP][13]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@kms_force_connector_basic@force-load-detect.html
- bat-adlp-6: NOTRUN -> [SKIP][14]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adlp-6/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_pm_backlight@basic-brightness:
- bat-adls-6: NOTRUN -> [SKIP][15] ([i915#5354])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_psr@psr-primary-mmap-gtt:
- bat-adls-6: NOTRUN -> [SKIP][16] ([i915#1072] / [i915#9732]) +3 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@kms_psr@psr-primary-mmap-gtt.html
* igt@kms_setmode@basic-clone-single-crtc:
- bat-adlp-6: NOTRUN -> [SKIP][17] ([i915#3555])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adlp-6/igt@kms_setmode@basic-clone-single-crtc.html
- bat-adls-6: NOTRUN -> [SKIP][18] ([i915#3555])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@kms_setmode@basic-clone-single-crtc.html
* igt@prime_vgem@basic-fence-read:
- bat-adls-6: NOTRUN -> [SKIP][19] ([i915#3291]) +2 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adls-6/igt@prime_vgem@basic-fence-read.html
* igt@prime_vgem@basic-write:
- bat-adlp-6: NOTRUN -> [SKIP][20] ([i915#3291] / [i915#3708]) +2 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-adlp-6/igt@prime_vgem@basic-write.html
#### Possible fixes ####
* igt@i915_selftest@live@workarounds:
- bat-arls-6: [DMESG-FAIL][21] ([i915#12061]) -> [PASS][22] +1 other test pass
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/bat-arls-6/igt@i915_selftest@live@workarounds.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/bat-arls-6/igt@i915_selftest@live@workarounds.html
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#15656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15656
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
Build changes
-------------
* Linux: CI_DRM_18130 -> Patchwork_163033v1
CI-20190529: 20190529
CI_DRM_18130: 4a30f5fa0fe382b3915a8208a483d0044c40b9eb @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8793: c623172fdd4dd92bb23dbc55b3930c40266c3e59 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_163033v1: 4a30f5fa0fe382b3915a8208a483d0044c40b9eb @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/index.html
[-- Attachment #2: Type: text/html, Size: 8625 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH 1/5] drm/i915: move i915 specific bo implementation to i915
2026-03-11 14:18 ` [PATCH 1/5] drm/i915: move i915 specific bo implementation to i915 Jani Nikula
@ 2026-03-12 3:39 ` Kandpal, Suraj
2026-03-12 3:52 ` Kandpal, Suraj
0 siblings, 1 reply; 17+ messages in thread
From: Kandpal, Suraj @ 2026-03-12 3:39 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Nikula, Jani
> Subject: [PATCH 1/5] drm/i915: move i915 specific bo implementation to i915
>
> The bo interface implementation is different for both i915 and xe. Move the
> i915 specific implementation from display to i915 core.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
LGTM,
Reviewed-by : Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> drivers/gpu/drm/i915/Makefile | 2 +-
> drivers/gpu/drm/i915/{display/intel_bo.c => i915_bo.c} | 3 ++-
> 2 files changed, 3 insertions(+), 2 deletions(-) rename
> drivers/gpu/drm/i915/{display/intel_bo.c => i915_bo.c} (97%)
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 7e9d9b666511..52a82608b8b1 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -76,6 +76,7 @@ i915-$(CONFIG_PERF_EVENTS) += \
>
> # core display adaptation
> i915-y += \
> + i915_bo.o \
> i915_display_pc8.o \
> i915_dpt.o \
> i915_dsb_buffer.o \
> @@ -239,7 +240,6 @@ i915-y += \
> display/intel_atomic.o \
> display/intel_audio.o \
> display/intel_bios.o \
> - display/intel_bo.o \
> display/intel_bw.o \
> display/intel_casf.o \
> display/intel_cdclk.o \
> diff --git a/drivers/gpu/drm/i915/display/intel_bo.c
> b/drivers/gpu/drm/i915/i915_bo.c similarity index 97% rename from
> drivers/gpu/drm/i915/display/intel_bo.c
> rename to drivers/gpu/drm/i915/i915_bo.c index
> 2b6eaec351d8..21a4533ba341 100644
> --- a/drivers/gpu/drm/i915/display/intel_bo.c
> +++ b/drivers/gpu/drm/i915/i915_bo.c
> @@ -3,12 +3,13 @@
>
> #include <drm/drm_panic.h>
>
> +#include "display/intel_bo.h"
> +
> #include "gem/i915_gem_mman.h"
> #include "gem/i915_gem_object.h"
> #include "gem/i915_gem_object_frontbuffer.h"
> #include "pxp/intel_pxp.h"
> #include "i915_debugfs.h"
> -#include "intel_bo.h"
>
> bool intel_bo_is_tiled(struct drm_gem_object *obj) {
> --
> 2.47.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH 2/5] drm/xe: rename intel_bo.c to xe_display_bo.c
2026-03-11 14:18 ` [PATCH 2/5] drm/xe: rename intel_bo.c to xe_display_bo.c Jani Nikula
@ 2026-03-12 3:40 ` Kandpal, Suraj
0 siblings, 0 replies; 17+ messages in thread
From: Kandpal, Suraj @ 2026-03-12 3:40 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Nikula, Jani
> Subject: [PATCH 2/5] drm/xe: rename intel_bo.c to xe_display_bo.c
>
> Follow the xe_ prefixed file naming in xe. With xe_bo.[ch] already being a
> thing in xe core, use xe_display_bo.c.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> drivers/gpu/drm/xe/Makefile | 2 +-
> drivers/gpu/drm/xe/display/{intel_bo.c => xe_display_bo.c} | 0
> 2 files changed, 1 insertion(+), 1 deletion(-) rename
> drivers/gpu/drm/xe/display/{intel_bo.c => xe_display_bo.c} (100%)
>
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index 50608312bc66..aeede4423680 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -211,10 +211,10 @@ $(obj)/i915-display/%.o:
> $(srctree)/drivers/gpu/drm/i915/display/%.c FORCE
>
> # Display code specific to xe
> xe-$(CONFIG_DRM_XE_DISPLAY) += \
> - display/intel_bo.o \
> display/intel_fb_bo.o \
> display/intel_fbdev_fb.o \
> display/xe_display.o \
> + display/xe_display_bo.o \
> display/xe_display_pcode.o \
> display/xe_display_rpm.o \
> display/xe_display_wa.o \
> diff --git a/drivers/gpu/drm/xe/display/intel_bo.c
> b/drivers/gpu/drm/xe/display/xe_display_bo.c
> similarity index 100%
> rename from drivers/gpu/drm/xe/display/intel_bo.c
> rename to drivers/gpu/drm/xe/display/xe_display_bo.c
> --
> 2.47.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to parent interface
2026-03-11 14:18 ` [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to parent interface Jani Nikula
@ 2026-03-12 3:47 ` Kandpal, Suraj
2026-03-12 4:27 ` Kandpal, Suraj
0 siblings, 1 reply; 17+ messages in thread
From: Kandpal, Suraj @ 2026-03-12 3:47 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Nikula, Jani
> Subject: [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to parent
> interface
>
> Continue i915 and xe separation from display by moving the bo calls to the
> display parent interface. Instead of adding all these functions to
> intel_parent.[ch], reuse the now vacated intel_bo.[ch], and avoid mass
> renames to calls of these functions. This is similar to intel_display_rpm.[ch].
>
> Make many of the hooks optional to avoid having to implement dummy
> functions in xe. Indeed now we can remove many of the existing dummy
> functions.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/Makefile | 1 +
> drivers/gpu/drm/i915/display/intel_bo.c | 66 ++++++++++++++++++++
> drivers/gpu/drm/i915/i915_bo.c | 32 +++++++---
> drivers/gpu/drm/i915/i915_bo.h | 9 +++
> drivers/gpu/drm/i915/i915_driver.c | 2 +
> drivers/gpu/drm/xe/Makefile | 1 +
> drivers/gpu/drm/xe/display/xe_display.c | 2 +
> drivers/gpu/drm/xe/display/xe_display_bo.c | 45 +++----------
> drivers/gpu/drm/xe/display/xe_display_bo.h | 9 +++
> include/drm/intel/display_parent_interface.h | 16 +++++
> 10 files changed, 138 insertions(+), 45 deletions(-) create mode 100644
> drivers/gpu/drm/i915/display/intel_bo.c
> create mode 100644 drivers/gpu/drm/i915/i915_bo.h create mode 100644
> drivers/gpu/drm/xe/display/xe_display_bo.h
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 52a82608b8b1..425933fb26a5 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -240,6 +240,7 @@ i915-y += \
> display/intel_atomic.o \
> display/intel_audio.o \
> display/intel_bios.o \
> + display/intel_bo.o \
> display/intel_bw.o \
> display/intel_casf.o \
> display/intel_cdclk.o \
> diff --git a/drivers/gpu/drm/i915/display/intel_bo.c
> b/drivers/gpu/drm/i915/display/intel_bo.c
> new file mode 100644
> index 000000000000..e356ab4e0640
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_bo.c
> @@ -0,0 +1,66 @@
> +// SPDX-License-Identifier: MIT
> +/* Copyright © 2026 Intel Corporation */
> +
> +#include <drm/drm_gem.h>
> +#include <drm/intel/display_parent_interface.h>
> +
> +#include "intel_bo.h"
> +#include "intel_display_core.h"
> +#include "intel_display_types.h"
> +
> +bool intel_bo_is_tiled(struct drm_gem_object *obj) {
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + return display->parent->bo->is_tiled &&
> +display->parent->bo->is_tiled(obj);
> +}
> +
> +bool intel_bo_is_userptr(struct drm_gem_object *obj) {
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + return display->parent->bo->is_userptr &&
> +display->parent->bo->is_userptr(obj);
> +}
> +
> +bool intel_bo_is_shmem(struct drm_gem_object *obj) {
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + return display->parent->bo->is_shmem &&
> +display->parent->bo->is_shmem(obj);
> +}
> +
> +bool intel_bo_is_protected(struct drm_gem_object *obj) {
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + return display->parent->bo->is_protected(obj);
> +}
> +
> +int intel_bo_key_check(struct drm_gem_object *obj) {
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + return display->parent->bo->key_check(obj);
> +}
> +
> +int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct
> +*vma) {
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + return display->parent->bo->fb_mmap(obj, vma); }
> +
> +int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset,
> +void *dst, int size) {
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + return display->parent->bo->read_from_page(obj, offset, dst, size); }
> +
> +void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
> +{
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + if (display->parent->bo->describe)
> + display->parent->bo->describe(m, obj);
Nit: Why not follow the same way of making this optional the way you have done on top
Would look consistent.
return display->parent->bo->describe && display->parent->bo->describe(m, obj);
Otherwise LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> diff --git a/drivers/gpu/drm/i915/i915_bo.c
> b/drivers/gpu/drm/i915/i915_bo.c index 21a4533ba341..04fc0e3b7ef6
> 100644
> --- a/drivers/gpu/drm/i915/i915_bo.c
> +++ b/drivers/gpu/drm/i915/i915_bo.c
> @@ -2,51 +2,63 @@
> /* Copyright © 2024 Intel Corporation */
>
> #include <drm/drm_panic.h>
> -
> -#include "display/intel_bo.h"
> +#include <drm/intel/display_parent_interface.h>
>
> #include "gem/i915_gem_mman.h"
> #include "gem/i915_gem_object.h"
> #include "gem/i915_gem_object_frontbuffer.h"
> #include "pxp/intel_pxp.h"
> +
> +#include "i915_bo.h"
> #include "i915_debugfs.h"
>
> -bool intel_bo_is_tiled(struct drm_gem_object *obj)
> +static bool i915_bo_is_tiled(struct drm_gem_object *obj)
> {
> return i915_gem_object_is_tiled(to_intel_bo(obj));
> }
>
> -bool intel_bo_is_userptr(struct drm_gem_object *obj)
> +static bool i915_bo_is_userptr(struct drm_gem_object *obj)
> {
> return i915_gem_object_is_userptr(to_intel_bo(obj));
> }
>
> -bool intel_bo_is_shmem(struct drm_gem_object *obj)
> +static bool i915_bo_is_shmem(struct drm_gem_object *obj)
> {
> return i915_gem_object_is_shmem(to_intel_bo(obj));
> }
>
> -bool intel_bo_is_protected(struct drm_gem_object *obj)
> +static bool i915_bo_is_protected(struct drm_gem_object *obj)
> {
> return i915_gem_object_is_protected(to_intel_bo(obj));
> }
>
> -int intel_bo_key_check(struct drm_gem_object *obj)
> +static int i915_bo_key_check(struct drm_gem_object *obj)
> {
> return intel_pxp_key_check(obj, false); }
>
> -int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct
> *vma)
> +static int i915_bo_fb_mmap(struct drm_gem_object *obj, struct
> +vm_area_struct *vma)
> {
> return i915_gem_fb_mmap(to_intel_bo(obj), vma); }
>
> -int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void
> *dst, int size)
> +static int i915_bo_read_from_page(struct drm_gem_object *obj, u64
> +offset, void *dst, int size)
> {
> return i915_gem_object_read_from_page(to_intel_bo(obj), offset,
> dst, size); }
>
> -void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
> +static void i915_bo_describe(struct seq_file *m, struct drm_gem_object
> +*obj)
> {
> i915_debugfs_describe_obj(m, to_intel_bo(obj)); }
> +
> +const struct intel_display_bo_interface i915_display_bo_interface = {
> + .is_tiled = i915_bo_is_tiled,
> + .is_userptr = i915_bo_is_userptr,
> + .is_shmem = i915_bo_is_shmem,
> + .is_protected = i915_bo_is_protected,
> + .key_check = i915_bo_key_check,
> + .fb_mmap = i915_bo_fb_mmap,
> + .read_from_page = i915_bo_read_from_page,
> + .describe = i915_bo_describe,
> +};
> diff --git a/drivers/gpu/drm/i915/i915_bo.h
> b/drivers/gpu/drm/i915/i915_bo.h new file mode 100644 index
> 000000000000..57255d052dd9
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/i915_bo.h
> @@ -0,0 +1,9 @@
> +/* SPDX-License-Identifier: MIT */
> +/* Copyright © 2026 Intel Corporation */
> +
> +#ifndef __I915_BO_H__
> +#define __I915_BO_H__
> +
> +extern const struct intel_display_bo_interface
> +i915_display_bo_interface;
> +
> +#endif /* __I915_BO_H__ */
> diff --git a/drivers/gpu/drm/i915/i915_driver.c
> b/drivers/gpu/drm/i915/i915_driver.c
> index 7a8c59a8c865..385a634c3ed0 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -90,6 +90,7 @@
> #include "pxp/intel_pxp_debugfs.h"
> #include "pxp/intel_pxp_pm.h"
>
> +#include "i915_bo.h"
> #include "i915_debugfs.h"
> #include "i915_display_pc8.h"
> #include "i915_dpt.h"
> @@ -765,6 +766,7 @@ static bool vgpu_active(struct drm_device *drm) }
>
> static const struct intel_display_parent_interface parent = {
> + .bo = &i915_display_bo_interface,
> .dpt = &i915_display_dpt_interface,
> .dsb = &i915_display_dsb_interface,
> .frontbuffer = &i915_display_frontbuffer_interface,
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index aeede4423680..b16ed1ce2a85 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -235,6 +235,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
> i915-display/intel_audio.o \
> i915-display/intel_backlight.o \
> i915-display/intel_bios.o \
> + i915-display/intel_bo.o \
> i915-display/intel_bw.o \
> i915-display/intel_casf.o \
> i915-display/intel_cdclk.o \
> diff --git a/drivers/gpu/drm/xe/display/xe_display.c
> b/drivers/gpu/drm/xe/display/xe_display.c
> index f1e1889a52d3..49b6f98e7391 100644
> --- a/drivers/gpu/drm/xe/display/xe_display.c
> +++ b/drivers/gpu/drm/xe/display/xe_display.c
> @@ -35,6 +35,7 @@
> #include "intel_hotplug.h"
> #include "intel_opregion.h"
> #include "skl_watermark.h"
> +#include "xe_display_bo.h"
> #include "xe_display_pcode.h"
> #include "xe_display_rpm.h"
> #include "xe_dsb_buffer.h"
> @@ -541,6 +542,7 @@ static const struct intel_display_irq_interface
> xe_display_irq_interface = { };
>
> static const struct intel_display_parent_interface parent = {
> + .bo = &xe_display_bo_interface,
> .dsb = &xe_display_dsb_interface,
> .frontbuffer = &xe_display_frontbuffer_interface,
> .hdcp = &xe_display_hdcp_interface,
> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c
> b/drivers/gpu/drm/xe/display/xe_display_bo.c
> index fa1f2c796b81..a53ba3f247ec 100644
> --- a/drivers/gpu/drm/xe/display/xe_display_bo.c
> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c
> @@ -2,52 +2,27 @@
> /* Copyright © 2024 Intel Corporation */
>
> #include <drm/drm_gem.h>
> +#include <drm/intel/display_parent_interface.h>
>
> -#include "intel_bo.h"
> -#include "intel_frontbuffer.h"
> #include "xe_bo.h"
> +#include "xe_display_bo.h"
> #include "xe_pxp.h"
>
> -bool intel_bo_is_tiled(struct drm_gem_object *obj) -{
> - /* legacy tiling is unused */
> - return false;
> -}
> -
> -bool intel_bo_is_userptr(struct drm_gem_object *obj) -{
> - /* xe does not have userptr bos */
> - return false;
> -}
> -
> -bool intel_bo_is_shmem(struct drm_gem_object *obj) -{
> - return false;
> -}
> -
> -bool intel_bo_is_protected(struct drm_gem_object *obj)
> +static bool xe_display_bo_is_protected(struct drm_gem_object *obj)
> {
> return xe_bo_is_protected(gem_to_xe_bo(obj));
> }
>
> -int intel_bo_key_check(struct drm_gem_object *obj) -{
> - return xe_pxp_obj_key_check(obj);
> -}
> -
> -int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct
> *vma) -{
> - return drm_gem_prime_mmap(obj, vma);
> -}
> -
> -int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void
> *dst, int size)
> +static int xe_display_bo_read_from_page(struct drm_gem_object *obj, u64
> +offset, void *dst, int size)
> {
> struct xe_bo *bo = gem_to_xe_bo(obj);
>
> return xe_bo_read(bo, offset, dst, size); }
>
> -void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj) -{
> - /* FIXME */
> -}
> +const struct intel_display_bo_interface xe_display_bo_interface = {
> + .is_protected = xe_display_bo_is_protected,
> + .key_check = xe_pxp_obj_key_check,
> + .fb_mmap = drm_gem_prime_mmap,
> + .read_from_page = xe_display_bo_read_from_page, };
> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.h
> b/drivers/gpu/drm/xe/display/xe_display_bo.h
> new file mode 100644
> index 000000000000..6879c104b0b1
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.h
> @@ -0,0 +1,9 @@
> +/* SPDX-License-Identifier: MIT */
> +/* Copyright © 2026 Intel Corporation */
> +
> +#ifndef __XE_DISPLAY_BO_H__
> +#define __XE_DISPLAY_BO_H__
> +
> +extern const struct intel_display_bo_interface xe_display_bo_interface;
> +
> +#endif
> diff --git a/include/drm/intel/display_parent_interface.h
> b/include/drm/intel/display_parent_interface.h
> index c044472b9400..2b53d12b0e0a 100644
> --- a/include/drm/intel/display_parent_interface.h
> +++ b/include/drm/intel/display_parent_interface.h
> @@ -23,9 +23,22 @@ struct intel_initial_plane_config; struct intel_panic;
> struct intel_stolen_node; struct ref_tracker;
> +struct seq_file;
> +struct vm_area_struct;
>
> /* Keep struct definitions sorted */
>
> +struct intel_display_bo_interface {
> + bool (*is_tiled)(struct drm_gem_object *obj); /* Optional */
> + bool (*is_userptr)(struct drm_gem_object *obj); /* Optional */
> + bool (*is_shmem)(struct drm_gem_object *obj); /* Optional */
> + bool (*is_protected)(struct drm_gem_object *obj);
> + int (*key_check)(struct drm_gem_object *obj);
> + int (*fb_mmap)(struct drm_gem_object *obj, struct vm_area_struct
> *vma);
> + int (*read_from_page)(struct drm_gem_object *obj, u64 offset, void
> *dst, int size);
> + void (*describe)(struct seq_file *m, struct drm_gem_object *obj); /*
> +Optional */ };
> +
> struct intel_display_dpt_interface {
> struct intel_dpt *(*create)(struct drm_gem_object *obj, size_t size);
> void (*destroy)(struct intel_dpt *dpt); @@ -174,6 +187,9 @@ struct
> intel_display_vma_interface {
> * check the optional pointers.
> */
> struct intel_display_parent_interface {
> + /** @bo: BO interface */
> + const struct intel_display_bo_interface *bo;
> +
> /** @dpt: DPT interface. Optional. */
> const struct intel_display_dpt_interface *dpt;
>
> --
> 2.47.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH 4/5] drm/i915/fb: make intel_fb_bo.c less dependent on display
2026-03-11 14:18 ` [PATCH 4/5] drm/i915/fb: make intel_fb_bo.c less dependent on display Jani Nikula
@ 2026-03-12 3:51 ` Kandpal, Suraj
0 siblings, 0 replies; 17+ messages in thread
From: Kandpal, Suraj @ 2026-03-12 3:51 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Nikula, Jani
> Subject: [PATCH 4/5] drm/i915/fb: make intel_fb_bo.c less dependent on
> display
>
> intel_fb_bo.c is i915 core specific code, and should use struct
> drm_i915_private instead of struct intel_display.
>
> Switch one DISPLAY_VER() to GRAPHICS_VER(). The check is for < 4, where
> they're effectively the same thing.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
LGTM,
Reviewed-by: Suraj Kandpal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_fb_bo.c | 14 ++++++--------
> 1 file changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.c
> b/drivers/gpu/drm/i915/display/intel_fb_bo.c
> index bfecd73d5fa0..a4d49ef450d9 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb_bo.c
> +++ b/drivers/gpu/drm/i915/display/intel_fb_bo.c
> @@ -9,8 +9,6 @@
> #include "gem/i915_gem_object.h"
>
> #include "i915_drv.h"
> -#include "intel_display_core.h"
> -#include "intel_display_types.h"
> #include "intel_fb.h"
> #include "intel_fb_bo.h"
>
> @@ -23,7 +21,7 @@ int intel_fb_bo_framebuffer_init(struct
> drm_gem_object *_obj,
> struct drm_mode_fb_cmd2 *mode_cmd) {
> struct drm_i915_gem_object *obj = to_intel_bo(_obj);
> - struct intel_display *display = to_intel_display(obj->base.dev);
> + struct drm_i915_private *i915 = to_i915(obj->base.dev);
> unsigned int tiling, stride;
>
> i915_gem_object_lock(obj, NULL);
> @@ -38,7 +36,7 @@ int intel_fb_bo_framebuffer_init(struct
> drm_gem_object *_obj,
> */
> if (tiling != I915_TILING_NONE &&
> tiling != intel_fb_modifier_to_tiling(mode_cmd-
> >modifier[0])) {
> - drm_dbg_kms(display->drm,
> + drm_dbg_kms(&i915->drm,
> "tiling_mode doesn't match fb modifier\n");
> return -EINVAL;
> }
> @@ -46,7 +44,7 @@ int intel_fb_bo_framebuffer_init(struct
> drm_gem_object *_obj,
> if (tiling == I915_TILING_X) {
> mode_cmd->modifier[0] =
> I915_FORMAT_MOD_X_TILED;
> } else if (tiling == I915_TILING_Y) {
> - drm_dbg_kms(display->drm,
> + drm_dbg_kms(&i915->drm,
> "No Y tiling for legacy addfb\n");
> return -EINVAL;
> }
> @@ -56,9 +54,9 @@ int intel_fb_bo_framebuffer_init(struct
> drm_gem_object *_obj,
> * gen2/3 display engine uses the fence if present,
> * so the tiling mode must match the fb modifier exactly.
> */
> - if (DISPLAY_VER(display) < 4 &&
> + if (GRAPHICS_VER(i915) < 4 &&
> tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
> - drm_dbg_kms(display->drm,
> + drm_dbg_kms(&i915->drm,
> "tiling_mode must match fb modifier exactly on
> gen2/3\n");
> return -EINVAL;
> }
> @@ -68,7 +66,7 @@ int intel_fb_bo_framebuffer_init(struct
> drm_gem_object *_obj,
> * the fb pitch and fence stride match.
> */
> if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
> - drm_dbg_kms(display->drm,
> + drm_dbg_kms(&i915->drm,
> "pitch (%d) must match tiling stride (%d)\n",
> mode_cmd->pitches[0], stride);
> return -EINVAL;
> --
> 2.47.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH 1/5] drm/i915: move i915 specific bo implementation to i915
2026-03-12 3:39 ` Kandpal, Suraj
@ 2026-03-12 3:52 ` Kandpal, Suraj
0 siblings, 0 replies; 17+ messages in thread
From: Kandpal, Suraj @ 2026-03-12 3:52 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Nikula, Jani
> -----Original Message-----
> From: Kandpal, Suraj
> Sent: Thursday, March 12, 2026 9:09 AM
> To: 'Jani Nikula' <jani.nikula@intel.com>; intel-gfx@lists.freedesktop.org;
> intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>
> Subject: RE: [PATCH 1/5] drm/i915: move i915 specific bo implementation to
> i915
>
> > Subject: [PATCH 1/5] drm/i915: move i915 specific bo implementation to
> > i915
> >
> > The bo interface implementation is different for both i915 and xe.
> > Move the
> > i915 specific implementation from display to i915 core.
> >
> > Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > ---
> > drivers/gpu/drm/i915/Makefile | 2 +-
> > drivers/gpu/drm/i915/{display/intel_bo.c => i915_bo.c} | 3 ++-
> > 2 files changed, 3 insertions(+), 2 deletions(-) rename
> > drivers/gpu/drm/i915/{display/intel_bo.c => i915_bo.c} (97%)
> >
> > diff --git a/drivers/gpu/drm/i915/Makefile
> > b/drivers/gpu/drm/i915/Makefile index 7e9d9b666511..52a82608b8b1
> > 100644
> > --- a/drivers/gpu/drm/i915/Makefile
> > +++ b/drivers/gpu/drm/i915/Makefile
> > @@ -76,6 +76,7 @@ i915-$(CONFIG_PERF_EVENTS) += \
> >
> > # core display adaptation
> > i915-y += \
> > + i915_bo.o \
> > i915_display_pc8.o \
> > i915_dpt.o \
> > i915_dsb_buffer.o \
> > @@ -239,7 +240,6 @@ i915-y += \
> > display/intel_atomic.o \
> > display/intel_audio.o \
> > display/intel_bios.o \
> > - display/intel_bo.o \
> > display/intel_bw.o \
> > display/intel_casf.o \
> > display/intel_cdclk.o \
> > diff --git a/drivers/gpu/drm/i915/display/intel_bo.c
> > b/drivers/gpu/drm/i915/i915_bo.c similarity index 97% rename from
> > drivers/gpu/drm/i915/display/intel_bo.c
> > rename to drivers/gpu/drm/i915/i915_bo.c index
> > 2b6eaec351d8..21a4533ba341 100644
> > --- a/drivers/gpu/drm/i915/display/intel_bo.c
> > +++ b/drivers/gpu/drm/i915/i915_bo.c
> > @@ -3,12 +3,13 @@
> >
> > #include <drm/drm_panic.h>
> >
> > +#include "display/intel_bo.h"
> > +
> > #include "gem/i915_gem_mman.h"
> > #include "gem/i915_gem_object.h"
> > #include "gem/i915_gem_object_frontbuffer.h"
> > #include "pxp/intel_pxp.h"
> > #include "i915_debugfs.h"
> > -#include "intel_bo.h"
> >
> > bool intel_bo_is_tiled(struct drm_gem_object *obj) {
> > --
> > 2.47.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent interface
2026-03-11 14:18 ` [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent interface Jani Nikula
@ 2026-03-12 4:25 ` Kandpal, Suraj
2026-03-12 9:00 ` [PATCH 5/5] drm/{i915, xe}: " Jani Nikula
0 siblings, 1 reply; 17+ messages in thread
From: Kandpal, Suraj @ 2026-03-12 4:25 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Nikula, Jani
> Subject: [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent interface
>
> Add .framebuffer_init, .framebuffer_fini and .framebuffer_lookup to the bo
> parent interface. While they're about framebuffers, they're specifically about
> framebuffer objects, so the bo interface is a good enough fit, and there's no
> need to add another interface struct.
Maybe it can also be mentioned that since we move all the functions from
Intel_fb_bo to i915_bo.c we can safely remove it.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/Makefile | 1 -
> drivers/gpu/drm/i915/display/intel_bo.c | 21 +++++
> drivers/gpu/drm/i915/display/intel_bo.h | 9 ++
> drivers/gpu/drm/i915/display/intel_fb.c | 12 +--
> drivers/gpu/drm/i915/display/intel_fb_bo.c | 99 --------------------
> drivers/gpu/drm/i915/display/intel_fb_bo.h | 25 -----
> drivers/gpu/drm/i915/i915_bo.c | 92 ++++++++++++++++++
> drivers/gpu/drm/xe/Makefile | 1 -
> drivers/gpu/drm/xe/display/intel_fb_bo.c | 91 ------------------
> drivers/gpu/drm/xe/display/xe_display_bo.c | 84 +++++++++++++++++
> include/drm/intel/display_parent_interface.h | 6 ++
> 11 files changed, 218 insertions(+), 223 deletions(-) delete mode 100644
> drivers/gpu/drm/i915/display/intel_fb_bo.c
> delete mode 100644 drivers/gpu/drm/i915/display/intel_fb_bo.h
> delete mode 100644 drivers/gpu/drm/xe/display/intel_fb_bo.c
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 425933fb26a5..be976a90c5a6 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -278,7 +278,6 @@ i915-y += \
> display/intel_drrs.o \
> display/intel_dsb.o \
> display/intel_fb.o \
> - display/intel_fb_bo.o \
> display/intel_fb_pin.o \
> display/intel_fbc.o \
> display/intel_fdi.o \
> diff --git a/drivers/gpu/drm/i915/display/intel_bo.c
> b/drivers/gpu/drm/i915/display/intel_bo.c
> index e356ab4e0640..3b82d38a0504 100644
> --- a/drivers/gpu/drm/i915/display/intel_bo.c
> +++ b/drivers/gpu/drm/i915/display/intel_bo.c
> @@ -64,3 +64,24 @@ void intel_bo_describe(struct seq_file *m, struct
> drm_gem_object *obj)
> if (display->parent->bo->describe)
> display->parent->bo->describe(m, obj); }
> +
> +int intel_bo_framebuffer_init(struct drm_gem_object *obj, struct
> +drm_mode_fb_cmd2 *mode_cmd) {
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + return display->parent->bo->framebuffer_init(obj, mode_cmd); }
> +
> +void intel_bo_framebuffer_fini(struct drm_gem_object *obj) {
> + struct intel_display *display = to_intel_display(obj->dev);
> +
> + display->parent->bo->framebuffer_fini(obj);
Should we be making this optional . This will help avoid creating dummy functions
for fini like you have done previously.
Regards,
Suraj Kandpal
> +}
> +
> +struct drm_gem_object *intel_bo_framebuffer_lookup(struct intel_display
> *display,
> + struct drm_file *filp,
> + const struct
> drm_mode_fb_cmd2 *user_mode_cmd) {
> + return display->parent->bo->framebuffer_lookup(display->drm, filp,
> +user_mode_cmd); }
> diff --git a/drivers/gpu/drm/i915/display/intel_bo.h
> b/drivers/gpu/drm/i915/display/intel_bo.h
> index 40390ed92ceb..aec188c706c2 100644
> --- a/drivers/gpu/drm/i915/display/intel_bo.h
> +++ b/drivers/gpu/drm/i915/display/intel_bo.h
> @@ -6,8 +6,11 @@
>
> #include <linux/types.h>
>
> +struct drm_file;
> struct drm_gem_object;
> +struct drm_mode_fb_cmd2;
> struct drm_scanout_buffer;
> +struct intel_display;
> struct intel_framebuffer;
> struct seq_file;
> struct vm_area_struct;
> @@ -22,4 +25,10 @@ int intel_bo_read_from_page(struct drm_gem_object
> *obj, u64 offset, void *dst, i
>
> void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj);
>
> +void intel_bo_framebuffer_fini(struct drm_gem_object *obj); int
> +intel_bo_framebuffer_init(struct drm_gem_object *obj, struct
> +drm_mode_fb_cmd2 *mode_cmd); struct drm_gem_object
> *intel_bo_framebuffer_lookup(struct intel_display *display,
> + struct drm_file *filp,
> + const struct
> drm_mode_fb_cmd2 *user_mode_cmd);
> +
> #endif /* __INTEL_BO__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_fb.c
> b/drivers/gpu/drm/i915/display/intel_fb.c
> index 49c6ca9d94c6..5768619f840f 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb.c
> +++ b/drivers/gpu/drm/i915/display/intel_fb.c
> @@ -17,7 +17,6 @@
> #include "intel_display_types.h"
> #include "intel_display_utils.h"
> #include "intel_fb.h"
> -#include "intel_fb_bo.h"
> #include "intel_frontbuffer.h"
> #include "intel_parent.h"
> #include "intel_plane.h"
> @@ -2111,7 +2110,7 @@ static void intel_user_framebuffer_destroy(struct
> drm_framebuffer *fb)
> if (intel_fb_uses_dpt(fb))
> intel_parent_dpt_destroy(display, intel_fb->dpt);
>
> - intel_fb_bo_framebuffer_fini(intel_fb_bo(fb));
> + intel_bo_framebuffer_fini(intel_fb_bo(fb));
>
> intel_parent_frontbuffer_put(display, intel_fb->frontbuffer);
>
> @@ -2222,7 +2221,7 @@ int intel_framebuffer_init(struct intel_framebuffer
> *intel_fb,
>
> /*
> * intel_parent_frontbuffer_get() must be done before
> - * intel_fb_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
> + * intel_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
> */
> intel_fb->frontbuffer = intel_parent_frontbuffer_get(display, obj);
> if (!intel_fb->frontbuffer) {
> @@ -2230,7 +2229,7 @@ int intel_framebuffer_init(struct intel_framebuffer
> *intel_fb,
> goto err_free_panic;
> }
>
> - ret = intel_fb_bo_framebuffer_init(obj, mode_cmd);
> + ret = intel_bo_framebuffer_init(obj, mode_cmd);
> if (ret)
> goto err_frontbuffer_put;
>
> @@ -2333,7 +2332,7 @@ int intel_framebuffer_init(struct intel_framebuffer
> *intel_fb,
> if (intel_fb_uses_dpt(fb))
> intel_parent_dpt_destroy(display, intel_fb->dpt);
> err_bo_framebuffer_fini:
> - intel_fb_bo_framebuffer_fini(obj);
> + intel_bo_framebuffer_fini(obj);
> err_frontbuffer_put:
> intel_parent_frontbuffer_put(display, intel_fb->frontbuffer);
> err_free_panic:
> @@ -2348,11 +2347,12 @@ intel_user_framebuffer_create(struct
> drm_device *dev,
> const struct drm_format_info *info,
> const struct drm_mode_fb_cmd2
> *user_mode_cmd) {
> + struct intel_display *display = to_intel_display(dev);
> struct drm_framebuffer *fb;
> struct drm_gem_object *obj;
> struct drm_mode_fb_cmd2 mode_cmd = *user_mode_cmd;
>
> - obj = intel_fb_bo_lookup_valid_bo(dev, filp, &mode_cmd);
> + obj = intel_bo_framebuffer_lookup(display, filp, &mode_cmd);
> if (IS_ERR(obj))
> return ERR_CAST(obj);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.c
> b/drivers/gpu/drm/i915/display/intel_fb_bo.c
> deleted file mode 100644
> index a4d49ef450d9..000000000000
> --- a/drivers/gpu/drm/i915/display/intel_fb_bo.c
> +++ /dev/null
> @@ -1,99 +0,0 @@
> -/* SPDX-License-Identifier: MIT */
> -/*
> - * Copyright © 2021 Intel Corporation
> - */
> -
> -#include <drm/drm_framebuffer.h>
> -#include <drm/drm_print.h>
> -
> -#include "gem/i915_gem_object.h"
> -
> -#include "i915_drv.h"
> -#include "intel_fb.h"
> -#include "intel_fb_bo.h"
> -
> -void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj) -{
> - /* Nothing to do for i915 */
> -}
> -
> -int intel_fb_bo_framebuffer_init(struct drm_gem_object *_obj,
> - struct drm_mode_fb_cmd2 *mode_cmd)
> -{
> - struct drm_i915_gem_object *obj = to_intel_bo(_obj);
> - struct drm_i915_private *i915 = to_i915(obj->base.dev);
> - unsigned int tiling, stride;
> -
> - i915_gem_object_lock(obj, NULL);
> - tiling = i915_gem_object_get_tiling(obj);
> - stride = i915_gem_object_get_stride(obj);
> - i915_gem_object_unlock(obj);
> -
> - if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) {
> - /*
> - * If there's a fence, enforce that
> - * the fb modifier and tiling mode match.
> - */
> - if (tiling != I915_TILING_NONE &&
> - tiling != intel_fb_modifier_to_tiling(mode_cmd-
> >modifier[0])) {
> - drm_dbg_kms(&i915->drm,
> - "tiling_mode doesn't match fb modifier\n");
> - return -EINVAL;
> - }
> - } else {
> - if (tiling == I915_TILING_X) {
> - mode_cmd->modifier[0] =
> I915_FORMAT_MOD_X_TILED;
> - } else if (tiling == I915_TILING_Y) {
> - drm_dbg_kms(&i915->drm,
> - "No Y tiling for legacy addfb\n");
> - return -EINVAL;
> - }
> - }
> -
> - /*
> - * gen2/3 display engine uses the fence if present,
> - * so the tiling mode must match the fb modifier exactly.
> - */
> - if (GRAPHICS_VER(i915) < 4 &&
> - tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
> - drm_dbg_kms(&i915->drm,
> - "tiling_mode must match fb modifier exactly on
> gen2/3\n");
> - return -EINVAL;
> - }
> -
> - /*
> - * If there's a fence, enforce that
> - * the fb pitch and fence stride match.
> - */
> - if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
> - drm_dbg_kms(&i915->drm,
> - "pitch (%d) must match tiling stride (%d)\n",
> - mode_cmd->pitches[0], stride);
> - return -EINVAL;
> - }
> -
> - return 0;
> -}
> -
> -struct drm_gem_object *
> -intel_fb_bo_lookup_valid_bo(struct drm_device *drm,
> - struct drm_file *filp,
> - const struct drm_mode_fb_cmd2 *mode_cmd)
> -{
> - struct drm_i915_private *i915 = to_i915(drm);
> - struct drm_i915_gem_object *obj;
> -
> - obj = i915_gem_object_lookup(filp, mode_cmd->handles[0]);
> - if (!obj)
> - return ERR_PTR(-ENOENT);
> -
> - /* object is backed with LMEM for discrete */
> - if (HAS_LMEM(i915) && !i915_gem_object_can_migrate(obj,
> INTEL_REGION_LMEM_0)) {
> - /* object is "remote", not in local memory */
> - i915_gem_object_put(obj);
> - drm_dbg_kms(&i915->drm, "framebuffer must reside in local
> memory\n");
> - return ERR_PTR(-EREMOTE);
> - }
> -
> - return intel_bo_to_drm_bo(obj);
> -}
> diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.h
> b/drivers/gpu/drm/i915/display/intel_fb_bo.h
> deleted file mode 100644
> index d775773c6c03..000000000000
> --- a/drivers/gpu/drm/i915/display/intel_fb_bo.h
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -/* SPDX-License-Identifier: MIT */
> -/*
> - * Copyright © 2021 Intel Corporation
> - */
> -
> -#ifndef __INTEL_FB_BO_H__
> -#define __INTEL_FB_BO_H__
> -
> -struct drm_device;
> -struct drm_file;
> -struct drm_framebuffer;
> -struct drm_gem_object;
> -struct drm_mode_fb_cmd2;
> -
> -void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj);
> -
> -int intel_fb_bo_framebuffer_init(struct drm_gem_object *obj,
> - struct drm_mode_fb_cmd2 *mode_cmd);
> -
> -struct drm_gem_object *
> -intel_fb_bo_lookup_valid_bo(struct drm_device *drm,
> - struct drm_file *filp,
> - const struct drm_mode_fb_cmd2
> *user_mode_cmd);
> -
> -#endif
> diff --git a/drivers/gpu/drm/i915/i915_bo.c
> b/drivers/gpu/drm/i915/i915_bo.c index 04fc0e3b7ef6..1789f7cab05c
> 100644
> --- a/drivers/gpu/drm/i915/i915_bo.c
> +++ b/drivers/gpu/drm/i915/i915_bo.c
> @@ -2,8 +2,10 @@
> /* Copyright © 2024 Intel Corporation */
>
> #include <drm/drm_panic.h>
> +#include <drm/drm_print.h>
> #include <drm/intel/display_parent_interface.h>
>
> +#include "display/intel_fb.h"
> #include "gem/i915_gem_mman.h"
> #include "gem/i915_gem_object.h"
> #include "gem/i915_gem_object_frontbuffer.h"
> @@ -11,6 +13,7 @@
>
> #include "i915_bo.h"
> #include "i915_debugfs.h"
> +#include "i915_drv.h"
>
> static bool i915_bo_is_tiled(struct drm_gem_object *obj) { @@ -52,6 +55,92
> @@ static void i915_bo_describe(struct seq_file *m, struct drm_gem_object
> *obj)
> i915_debugfs_describe_obj(m, to_intel_bo(obj)); }
>
> +static int i915_bo_framebuffer_init(struct drm_gem_object *_obj,
> + struct drm_mode_fb_cmd2 *mode_cmd) {
> + struct drm_i915_gem_object *obj = to_intel_bo(_obj);
> + struct drm_i915_private *i915 = to_i915(obj->base.dev);
> + unsigned int tiling, stride;
> +
> + i915_gem_object_lock(obj, NULL);
> + tiling = i915_gem_object_get_tiling(obj);
> + stride = i915_gem_object_get_stride(obj);
> + i915_gem_object_unlock(obj);
> +
> + if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) {
> + /*
> + * If there's a fence, enforce that
> + * the fb modifier and tiling mode match.
> + */
> + if (tiling != I915_TILING_NONE &&
> + tiling != intel_fb_modifier_to_tiling(mode_cmd-
> >modifier[0])) {
> + drm_dbg_kms(&i915->drm,
> + "tiling_mode doesn't match fb modifier\n");
> + return -EINVAL;
> + }
> + } else {
> + if (tiling == I915_TILING_X) {
> + mode_cmd->modifier[0] =
> I915_FORMAT_MOD_X_TILED;
> + } else if (tiling == I915_TILING_Y) {
> + drm_dbg_kms(&i915->drm,
> + "No Y tiling for legacy addfb\n");
> + return -EINVAL;
> + }
> + }
> +
> + /*
> + * gen2/3 display engine uses the fence if present,
> + * so the tiling mode must match the fb modifier exactly.
> + */
> + if (GRAPHICS_VER(i915) < 4 &&
> + tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
> + drm_dbg_kms(&i915->drm,
> + "tiling_mode must match fb modifier exactly on
> gen2/3\n");
> + return -EINVAL;
> + }
> +
> + /*
> + * If there's a fence, enforce that
> + * the fb pitch and fence stride match.
> + */
> + if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
> + drm_dbg_kms(&i915->drm,
> + "pitch (%d) must match tiling stride (%d)\n",
> + mode_cmd->pitches[0], stride);
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> +static void i915_bo_framebuffer_fini(struct drm_gem_object *obj) {
> + /* Nothing to do for i915 */
> +}
> +
> +static struct drm_gem_object *
> +i915_bo_framebuffer_lookup(struct drm_device *drm,
> + struct drm_file *filp,
> + const struct drm_mode_fb_cmd2 *mode_cmd) {
> + struct drm_i915_private *i915 = to_i915(drm);
> + struct drm_i915_gem_object *obj;
> +
> + obj = i915_gem_object_lookup(filp, mode_cmd->handles[0]);
> + if (!obj)
> + return ERR_PTR(-ENOENT);
> +
> + /* object is backed with LMEM for discrete */
> + if (HAS_LMEM(i915) && !i915_gem_object_can_migrate(obj,
> INTEL_REGION_LMEM_0)) {
> + /* object is "remote", not in local memory */
> + i915_gem_object_put(obj);
> + drm_dbg_kms(&i915->drm, "framebuffer must reside in local
> memory\n");
> + return ERR_PTR(-EREMOTE);
> + }
> +
> + return intel_bo_to_drm_bo(obj);
> +}
> +
> const struct intel_display_bo_interface i915_display_bo_interface = {
> .is_tiled = i915_bo_is_tiled,
> .is_userptr = i915_bo_is_userptr,
> @@ -61,4 +150,7 @@ const struct intel_display_bo_interface
> i915_display_bo_interface = {
> .fb_mmap = i915_bo_fb_mmap,
> .read_from_page = i915_bo_read_from_page,
> .describe = i915_bo_describe,
> + .framebuffer_init = i915_bo_framebuffer_init,
> + .framebuffer_fini = i915_bo_framebuffer_fini,
> + .framebuffer_lookup = i915_bo_framebuffer_lookup,
> };
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index b16ed1ce2a85..dab979287a96 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -211,7 +211,6 @@ $(obj)/i915-display/%.o:
> $(srctree)/drivers/gpu/drm/i915/display/%.c FORCE
>
> # Display code specific to xe
> xe-$(CONFIG_DRM_XE_DISPLAY) += \
> - display/intel_fb_bo.o \
> display/intel_fbdev_fb.o \
> display/xe_display.o \
> display/xe_display_bo.o \
> diff --git a/drivers/gpu/drm/xe/display/intel_fb_bo.c
> b/drivers/gpu/drm/xe/display/intel_fb_bo.c
> deleted file mode 100644
> index db8b1a27b4de..000000000000
> --- a/drivers/gpu/drm/xe/display/intel_fb_bo.c
> +++ /dev/null
> @@ -1,91 +0,0 @@
> -/* SPDX-License-Identifier: MIT */
> -/*
> - * Copyright © 2021 Intel Corporation
> - */
> -
> -#include <drm/drm_modeset_helper.h>
> -#include <drm/ttm/ttm_bo.h>
> -
> -#include "intel_display_types.h"
> -#include "intel_fb.h"
> -#include "intel_fb_bo.h"
> -#include "xe_bo.h"
> -
> -void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj) -{
> - struct xe_bo *bo = gem_to_xe_bo(obj);
> -
> - if (bo->flags & XE_BO_FLAG_PINNED) {
> - /* Unpin our kernel fb first */
> - xe_bo_lock(bo, false);
> - xe_bo_unpin(bo);
> - xe_bo_unlock(bo);
> - }
> - xe_bo_put(bo);
> -}
> -
> -int intel_fb_bo_framebuffer_init(struct drm_gem_object *obj,
> - struct drm_mode_fb_cmd2 *mode_cmd)
> -{
> - struct xe_bo *bo = gem_to_xe_bo(obj);
> - struct xe_device *xe = to_xe_device(bo->ttm.base.dev);
> - int ret;
> -
> - /*
> - * Some modifiers require physical alignment of 64KiB VRAM pages;
> - * require that the BO in those cases is created correctly.
> - */
> - if (XE_IOCTL_DBG(xe, intel_fb_needs_64k_phys(mode_cmd-
> >modifier[0]) &&
> - !(bo->flags & XE_BO_FLAG_NEEDS_64K)))
> - return -EINVAL;
> -
> - xe_bo_get(bo);
> -
> - ret = ttm_bo_reserve(&bo->ttm, true, false, NULL);
> - if (ret)
> - goto err;
> -
> - if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
> - /*
> - * XE_BO_FLAG_SCANOUT should ideally be set at creation,
> or is
> - * automatically set when creating FB. We cannot change
> caching
> - * mode when the bo is VM_BINDed, so we can only set
> - * coherency with display when unbound.
> - */
> - if (XE_IOCTL_DBG(xe, xe_bo_is_vm_bound(bo))) {
> - ttm_bo_unreserve(&bo->ttm);
> - ret = -EINVAL;
> - goto err;
> - }
> - bo->flags |= XE_BO_FLAG_SCANOUT;
> - }
> - ttm_bo_unreserve(&bo->ttm);
> - return 0;
> -
> -err:
> - xe_bo_put(bo);
> - return ret;
> -}
> -
> -struct drm_gem_object *intel_fb_bo_lookup_valid_bo(struct drm_device
> *drm,
> - struct drm_file *filp,
> - const struct
> drm_mode_fb_cmd2 *mode_cmd)
> -{
> - struct xe_device *xe = to_xe_device(drm);
> - struct xe_bo *bo;
> - struct drm_gem_object *gem = drm_gem_object_lookup(filp,
> mode_cmd->handles[0]);
> -
> - if (!gem)
> - return ERR_PTR(-ENOENT);
> -
> - bo = gem_to_xe_bo(gem);
> - /* Require vram placement or dma-buf import */
> - if (IS_DGFX(xe) &&
> - !xe_bo_can_migrate(bo, XE_PL_VRAM0) &&
> - bo->ttm.type != ttm_bo_type_sg) {
> - drm_gem_object_put(gem);
> - return ERR_PTR(-EREMOTE);
> - }
> -
> - return gem;
> -}
> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c
> b/drivers/gpu/drm/xe/display/xe_display_bo.c
> index a53ba3f247ec..a689f71e7b14 100644
> --- a/drivers/gpu/drm/xe/display/xe_display_bo.c
> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c
> @@ -4,6 +4,7 @@
> #include <drm/drm_gem.h>
> #include <drm/intel/display_parent_interface.h>
>
> +#include "intel_fb.h"
> #include "xe_bo.h"
> #include "xe_display_bo.h"
> #include "xe_pxp.h"
> @@ -20,9 +21,92 @@ static int xe_display_bo_read_from_page(struct
> drm_gem_object *obj, u64 offset,
> return xe_bo_read(bo, offset, dst, size); }
>
> +static int xe_display_bo_framebuffer_init(struct drm_gem_object *obj,
> + struct drm_mode_fb_cmd2
> *mode_cmd) {
> + struct xe_bo *bo = gem_to_xe_bo(obj);
> + struct xe_device *xe = to_xe_device(bo->ttm.base.dev);
> + int ret;
> +
> + /*
> + * Some modifiers require physical alignment of 64KiB VRAM pages;
> + * require that the BO in those cases is created correctly.
> + */
> + if (XE_IOCTL_DBG(xe, intel_fb_needs_64k_phys(mode_cmd-
> >modifier[0]) &&
> + !(bo->flags & XE_BO_FLAG_NEEDS_64K)))
> + return -EINVAL;
> +
> + xe_bo_get(bo);
> +
> + ret = ttm_bo_reserve(&bo->ttm, true, false, NULL);
> + if (ret)
> + goto err;
> +
> + if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
> + /*
> + * XE_BO_FLAG_SCANOUT should ideally be set at creation,
> or is
> + * automatically set when creating FB. We cannot change
> caching
> + * mode when the bo is VM_BINDed, so we can only set
> + * coherency with display when unbound.
> + */
> + if (XE_IOCTL_DBG(xe, xe_bo_is_vm_bound(bo))) {
> + ttm_bo_unreserve(&bo->ttm);
> + ret = -EINVAL;
> + goto err;
> + }
> + bo->flags |= XE_BO_FLAG_SCANOUT;
> + }
> + ttm_bo_unreserve(&bo->ttm);
> + return 0;
> +
> +err:
> + xe_bo_put(bo);
> + return ret;
> +}
> +
> +static void xe_display_bo_framebuffer_fini(struct drm_gem_object *obj)
> +{
> + struct xe_bo *bo = gem_to_xe_bo(obj);
> +
> + if (bo->flags & XE_BO_FLAG_PINNED) {
> + /* Unpin our kernel fb first */
> + xe_bo_lock(bo, false);
> + xe_bo_unpin(bo);
> + xe_bo_unlock(bo);
> + }
> + xe_bo_put(bo);
> +}
> +
> +static struct drm_gem_object *
> +xe_display_bo_framebuffer_lookup(struct drm_device *drm,
> + struct drm_file *filp,
> + const struct drm_mode_fb_cmd2
> *mode_cmd) {
> + struct xe_device *xe = to_xe_device(drm);
> + struct xe_bo *bo;
> + struct drm_gem_object *gem = drm_gem_object_lookup(filp,
> +mode_cmd->handles[0]);
> +
> + if (!gem)
> + return ERR_PTR(-ENOENT);
> +
> + bo = gem_to_xe_bo(gem);
> + /* Require vram placement or dma-buf import */
> + if (IS_DGFX(xe) &&
> + !xe_bo_can_migrate(bo, XE_PL_VRAM0) &&
> + bo->ttm.type != ttm_bo_type_sg) {
> + drm_gem_object_put(gem);
> + return ERR_PTR(-EREMOTE);
> + }
> +
> + return gem;
> +}
> +
> const struct intel_display_bo_interface xe_display_bo_interface = {
> .is_protected = xe_display_bo_is_protected,
> .key_check = xe_pxp_obj_key_check,
> .fb_mmap = drm_gem_prime_mmap,
> .read_from_page = xe_display_bo_read_from_page,
> + .framebuffer_init = xe_display_bo_framebuffer_init,
> + .framebuffer_fini = xe_display_bo_framebuffer_fini,
> + .framebuffer_lookup = xe_display_bo_framebuffer_lookup,
> };
> diff --git a/include/drm/intel/display_parent_interface.h
> b/include/drm/intel/display_parent_interface.h
> index 2b53d12b0e0a..97ec94a2e749 100644
> --- a/include/drm/intel/display_parent_interface.h
> +++ b/include/drm/intel/display_parent_interface.h
> @@ -12,6 +12,7 @@ struct drm_device;
> struct drm_file;
> struct drm_framebuffer;
> struct drm_gem_object;
> +struct drm_mode_fb_cmd2;
> struct drm_plane_state;
> struct drm_scanout_buffer;
> struct i915_vma;
> @@ -37,6 +38,11 @@ struct intel_display_bo_interface {
> int (*fb_mmap)(struct drm_gem_object *obj, struct vm_area_struct
> *vma);
> int (*read_from_page)(struct drm_gem_object *obj, u64 offset, void
> *dst, int size);
> void (*describe)(struct seq_file *m, struct drm_gem_object *obj); /*
> Optional */
> + int (*framebuffer_init)(struct drm_gem_object *obj, struct
> drm_mode_fb_cmd2 *mode_cmd);
> + void (*framebuffer_fini)(struct drm_gem_object *obj);
> + struct drm_gem_object *(*framebuffer_lookup)(struct drm_device
> *drm,
> + struct drm_file *filp,
> + const struct
> drm_mode_fb_cmd2 *user_mode_cmd);
> };
>
> struct intel_display_dpt_interface {
> --
> 2.47.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to parent interface
2026-03-12 3:47 ` Kandpal, Suraj
@ 2026-03-12 4:27 ` Kandpal, Suraj
0 siblings, 0 replies; 17+ messages in thread
From: Kandpal, Suraj @ 2026-03-12 4:27 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Nikula, Jani
> Subject: RE: [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to parent
> interface
>
> > Subject: [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to
> > parent interface
> >
> > Continue i915 and xe separation from display by moving the bo calls to
> > the display parent interface. Instead of adding all these functions to
> > intel_parent.[ch], reuse the now vacated intel_bo.[ch], and avoid mass
> > renames to calls of these functions. This is similar to intel_display_rpm.[ch].
> >
> > Make many of the hooks optional to avoid having to implement dummy
> > functions in xe. Indeed now we can remove many of the existing dummy
> > functions.
> >
> > Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> > ---
> > drivers/gpu/drm/i915/Makefile | 1 +
> > drivers/gpu/drm/i915/display/intel_bo.c | 66 ++++++++++++++++++++
> > drivers/gpu/drm/i915/i915_bo.c | 32 +++++++---
> > drivers/gpu/drm/i915/i915_bo.h | 9 +++
> > drivers/gpu/drm/i915/i915_driver.c | 2 +
> > drivers/gpu/drm/xe/Makefile | 1 +
> > drivers/gpu/drm/xe/display/xe_display.c | 2 +
> > drivers/gpu/drm/xe/display/xe_display_bo.c | 45 +++----------
> > drivers/gpu/drm/xe/display/xe_display_bo.h | 9 +++
> > include/drm/intel/display_parent_interface.h | 16 +++++
> > 10 files changed, 138 insertions(+), 45 deletions(-) create mode
> > 100644 drivers/gpu/drm/i915/display/intel_bo.c
> > create mode 100644 drivers/gpu/drm/i915/i915_bo.h create mode 100644
> > drivers/gpu/drm/xe/display/xe_display_bo.h
> >
> > diff --git a/drivers/gpu/drm/i915/Makefile
> > b/drivers/gpu/drm/i915/Makefile index 52a82608b8b1..425933fb26a5
> > 100644
> > --- a/drivers/gpu/drm/i915/Makefile
> > +++ b/drivers/gpu/drm/i915/Makefile
> > @@ -240,6 +240,7 @@ i915-y += \
> > display/intel_atomic.o \
> > display/intel_audio.o \
> > display/intel_bios.o \
> > + display/intel_bo.o \
> > display/intel_bw.o \
> > display/intel_casf.o \
> > display/intel_cdclk.o \
> > diff --git a/drivers/gpu/drm/i915/display/intel_bo.c
> > b/drivers/gpu/drm/i915/display/intel_bo.c
> > new file mode 100644
> > index 000000000000..e356ab4e0640
> > --- /dev/null
> > +++ b/drivers/gpu/drm/i915/display/intel_bo.c
> > @@ -0,0 +1,66 @@
> > +// SPDX-License-Identifier: MIT
> > +/* Copyright © 2026 Intel Corporation */
> > +
> > +#include <drm/drm_gem.h>
> > +#include <drm/intel/display_parent_interface.h>
> > +
> > +#include "intel_bo.h"
> > +#include "intel_display_core.h"
> > +#include "intel_display_types.h"
> > +
> > +bool intel_bo_is_tiled(struct drm_gem_object *obj) {
> > + struct intel_display *display = to_intel_display(obj->dev);
> > +
> > + return display->parent->bo->is_tiled &&
> > +display->parent->bo->is_tiled(obj);
> > +}
> > +
> > +bool intel_bo_is_userptr(struct drm_gem_object *obj) {
> > + struct intel_display *display = to_intel_display(obj->dev);
> > +
> > + return display->parent->bo->is_userptr &&
> > +display->parent->bo->is_userptr(obj);
> > +}
> > +
> > +bool intel_bo_is_shmem(struct drm_gem_object *obj) {
> > + struct intel_display *display = to_intel_display(obj->dev);
> > +
> > + return display->parent->bo->is_shmem &&
> > +display->parent->bo->is_shmem(obj);
> > +}
> > +
> > +bool intel_bo_is_protected(struct drm_gem_object *obj) {
> > + struct intel_display *display = to_intel_display(obj->dev);
> > +
> > + return display->parent->bo->is_protected(obj);
> > +}
> > +
> > +int intel_bo_key_check(struct drm_gem_object *obj) {
> > + struct intel_display *display = to_intel_display(obj->dev);
> > +
> > + return display->parent->bo->key_check(obj);
> > +}
> > +
> > +int intel_bo_fb_mmap(struct drm_gem_object *obj, struct
> > +vm_area_struct
> > +*vma) {
> > + struct intel_display *display = to_intel_display(obj->dev);
> > +
> > + return display->parent->bo->fb_mmap(obj, vma); }
> > +
> > +int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset,
> > +void *dst, int size) {
> > + struct intel_display *display = to_intel_display(obj->dev);
> > +
> > + return display->parent->bo->read_from_page(obj, offset, dst, size);
> > +}
> > +
> > +void intel_bo_describe(struct seq_file *m, struct drm_gem_object
> > +*obj) {
> > + struct intel_display *display = to_intel_display(obj->dev);
> > +
> > + if (display->parent->bo->describe)
> > + display->parent->bo->describe(m, obj);
>
> Nit: Why not follow the same way of making this optional the way you have
> done on top Would look consistent.
> return display->parent->bo->describe && display->parent->bo-
> >describe(m, obj);
Ahh nevermind, I missed that it was a void function. In that case it make perfect sense.
Regards,
Suraj Kandpal
>
> Otherwise LGTM,
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> > diff --git a/drivers/gpu/drm/i915/i915_bo.c
> > b/drivers/gpu/drm/i915/i915_bo.c index 21a4533ba341..04fc0e3b7ef6
> > 100644
> > --- a/drivers/gpu/drm/i915/i915_bo.c
> > +++ b/drivers/gpu/drm/i915/i915_bo.c
> > @@ -2,51 +2,63 @@
> > /* Copyright © 2024 Intel Corporation */
> >
> > #include <drm/drm_panic.h>
> > -
> > -#include "display/intel_bo.h"
> > +#include <drm/intel/display_parent_interface.h>
> >
> > #include "gem/i915_gem_mman.h"
> > #include "gem/i915_gem_object.h"
> > #include "gem/i915_gem_object_frontbuffer.h"
> > #include "pxp/intel_pxp.h"
> > +
> > +#include "i915_bo.h"
> > #include "i915_debugfs.h"
> >
> > -bool intel_bo_is_tiled(struct drm_gem_object *obj)
> > +static bool i915_bo_is_tiled(struct drm_gem_object *obj)
> > {
> > return i915_gem_object_is_tiled(to_intel_bo(obj));
> > }
> >
> > -bool intel_bo_is_userptr(struct drm_gem_object *obj)
> > +static bool i915_bo_is_userptr(struct drm_gem_object *obj)
> > {
> > return i915_gem_object_is_userptr(to_intel_bo(obj));
> > }
> >
> > -bool intel_bo_is_shmem(struct drm_gem_object *obj)
> > +static bool i915_bo_is_shmem(struct drm_gem_object *obj)
> > {
> > return i915_gem_object_is_shmem(to_intel_bo(obj));
> > }
> >
> > -bool intel_bo_is_protected(struct drm_gem_object *obj)
> > +static bool i915_bo_is_protected(struct drm_gem_object *obj)
> > {
> > return i915_gem_object_is_protected(to_intel_bo(obj));
> > }
> >
> > -int intel_bo_key_check(struct drm_gem_object *obj)
> > +static int i915_bo_key_check(struct drm_gem_object *obj)
> > {
> > return intel_pxp_key_check(obj, false); }
> >
> > -int intel_bo_fb_mmap(struct drm_gem_object *obj, struct
> > vm_area_struct
> > *vma)
> > +static int i915_bo_fb_mmap(struct drm_gem_object *obj, struct
> > +vm_area_struct *vma)
> > {
> > return i915_gem_fb_mmap(to_intel_bo(obj), vma); }
> >
> > -int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset,
> > void *dst, int size)
> > +static int i915_bo_read_from_page(struct drm_gem_object *obj, u64
> > +offset, void *dst, int size)
> > {
> > return i915_gem_object_read_from_page(to_intel_bo(obj), offset,
> dst,
> > size); }
> >
> > -void intel_bo_describe(struct seq_file *m, struct drm_gem_object
> > *obj)
> > +static void i915_bo_describe(struct seq_file *m, struct
> > +drm_gem_object
> > +*obj)
> > {
> > i915_debugfs_describe_obj(m, to_intel_bo(obj)); }
> > +
> > +const struct intel_display_bo_interface i915_display_bo_interface = {
> > + .is_tiled = i915_bo_is_tiled,
> > + .is_userptr = i915_bo_is_userptr,
> > + .is_shmem = i915_bo_is_shmem,
> > + .is_protected = i915_bo_is_protected,
> > + .key_check = i915_bo_key_check,
> > + .fb_mmap = i915_bo_fb_mmap,
> > + .read_from_page = i915_bo_read_from_page,
> > + .describe = i915_bo_describe,
> > +};
> > diff --git a/drivers/gpu/drm/i915/i915_bo.h
> > b/drivers/gpu/drm/i915/i915_bo.h new file mode 100644 index
> > 000000000000..57255d052dd9
> > --- /dev/null
> > +++ b/drivers/gpu/drm/i915/i915_bo.h
> > @@ -0,0 +1,9 @@
> > +/* SPDX-License-Identifier: MIT */
> > +/* Copyright © 2026 Intel Corporation */
> > +
> > +#ifndef __I915_BO_H__
> > +#define __I915_BO_H__
> > +
> > +extern const struct intel_display_bo_interface
> > +i915_display_bo_interface;
> > +
> > +#endif /* __I915_BO_H__ */
> > diff --git a/drivers/gpu/drm/i915/i915_driver.c
> > b/drivers/gpu/drm/i915/i915_driver.c
> > index 7a8c59a8c865..385a634c3ed0 100644
> > --- a/drivers/gpu/drm/i915/i915_driver.c
> > +++ b/drivers/gpu/drm/i915/i915_driver.c
> > @@ -90,6 +90,7 @@
> > #include "pxp/intel_pxp_debugfs.h"
> > #include "pxp/intel_pxp_pm.h"
> >
> > +#include "i915_bo.h"
> > #include "i915_debugfs.h"
> > #include "i915_display_pc8.h"
> > #include "i915_dpt.h"
> > @@ -765,6 +766,7 @@ static bool vgpu_active(struct drm_device *drm) }
> >
> > static const struct intel_display_parent_interface parent = {
> > + .bo = &i915_display_bo_interface,
> > .dpt = &i915_display_dpt_interface,
> > .dsb = &i915_display_dsb_interface,
> > .frontbuffer = &i915_display_frontbuffer_interface,
> > diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> > index aeede4423680..b16ed1ce2a85 100644
> > --- a/drivers/gpu/drm/xe/Makefile
> > +++ b/drivers/gpu/drm/xe/Makefile
> > @@ -235,6 +235,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
> > i915-display/intel_audio.o \
> > i915-display/intel_backlight.o \
> > i915-display/intel_bios.o \
> > + i915-display/intel_bo.o \
> > i915-display/intel_bw.o \
> > i915-display/intel_casf.o \
> > i915-display/intel_cdclk.o \
> > diff --git a/drivers/gpu/drm/xe/display/xe_display.c
> > b/drivers/gpu/drm/xe/display/xe_display.c
> > index f1e1889a52d3..49b6f98e7391 100644
> > --- a/drivers/gpu/drm/xe/display/xe_display.c
> > +++ b/drivers/gpu/drm/xe/display/xe_display.c
> > @@ -35,6 +35,7 @@
> > #include "intel_hotplug.h"
> > #include "intel_opregion.h"
> > #include "skl_watermark.h"
> > +#include "xe_display_bo.h"
> > #include "xe_display_pcode.h"
> > #include "xe_display_rpm.h"
> > #include "xe_dsb_buffer.h"
> > @@ -541,6 +542,7 @@ static const struct intel_display_irq_interface
> > xe_display_irq_interface = { };
> >
> > static const struct intel_display_parent_interface parent = {
> > + .bo = &xe_display_bo_interface,
> > .dsb = &xe_display_dsb_interface,
> > .frontbuffer = &xe_display_frontbuffer_interface,
> > .hdcp = &xe_display_hdcp_interface,
> > diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c
> > b/drivers/gpu/drm/xe/display/xe_display_bo.c
> > index fa1f2c796b81..a53ba3f247ec 100644
> > --- a/drivers/gpu/drm/xe/display/xe_display_bo.c
> > +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c
> > @@ -2,52 +2,27 @@
> > /* Copyright © 2024 Intel Corporation */
> >
> > #include <drm/drm_gem.h>
> > +#include <drm/intel/display_parent_interface.h>
> >
> > -#include "intel_bo.h"
> > -#include "intel_frontbuffer.h"
> > #include "xe_bo.h"
> > +#include "xe_display_bo.h"
> > #include "xe_pxp.h"
> >
> > -bool intel_bo_is_tiled(struct drm_gem_object *obj) -{
> > - /* legacy tiling is unused */
> > - return false;
> > -}
> > -
> > -bool intel_bo_is_userptr(struct drm_gem_object *obj) -{
> > - /* xe does not have userptr bos */
> > - return false;
> > -}
> > -
> > -bool intel_bo_is_shmem(struct drm_gem_object *obj) -{
> > - return false;
> > -}
> > -
> > -bool intel_bo_is_protected(struct drm_gem_object *obj)
> > +static bool xe_display_bo_is_protected(struct drm_gem_object *obj)
> > {
> > return xe_bo_is_protected(gem_to_xe_bo(obj));
> > }
> >
> > -int intel_bo_key_check(struct drm_gem_object *obj) -{
> > - return xe_pxp_obj_key_check(obj);
> > -}
> > -
> > -int intel_bo_fb_mmap(struct drm_gem_object *obj, struct
> > vm_area_struct
> > *vma) -{
> > - return drm_gem_prime_mmap(obj, vma);
> > -}
> > -
> > -int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset,
> > void *dst, int size)
> > +static int xe_display_bo_read_from_page(struct drm_gem_object *obj,
> > +u64 offset, void *dst, int size)
> > {
> > struct xe_bo *bo = gem_to_xe_bo(obj);
> >
> > return xe_bo_read(bo, offset, dst, size); }
> >
> > -void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj) -{
> > - /* FIXME */
> > -}
> > +const struct intel_display_bo_interface xe_display_bo_interface = {
> > + .is_protected = xe_display_bo_is_protected,
> > + .key_check = xe_pxp_obj_key_check,
> > + .fb_mmap = drm_gem_prime_mmap,
> > + .read_from_page = xe_display_bo_read_from_page, };
> > diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.h
> > b/drivers/gpu/drm/xe/display/xe_display_bo.h
> > new file mode 100644
> > index 000000000000..6879c104b0b1
> > --- /dev/null
> > +++ b/drivers/gpu/drm/xe/display/xe_display_bo.h
> > @@ -0,0 +1,9 @@
> > +/* SPDX-License-Identifier: MIT */
> > +/* Copyright © 2026 Intel Corporation */
> > +
> > +#ifndef __XE_DISPLAY_BO_H__
> > +#define __XE_DISPLAY_BO_H__
> > +
> > +extern const struct intel_display_bo_interface
> > +xe_display_bo_interface;
> > +
> > +#endif
> > diff --git a/include/drm/intel/display_parent_interface.h
> > b/include/drm/intel/display_parent_interface.h
> > index c044472b9400..2b53d12b0e0a 100644
> > --- a/include/drm/intel/display_parent_interface.h
> > +++ b/include/drm/intel/display_parent_interface.h
> > @@ -23,9 +23,22 @@ struct intel_initial_plane_config; struct
> > intel_panic; struct intel_stolen_node; struct ref_tracker;
> > +struct seq_file;
> > +struct vm_area_struct;
> >
> > /* Keep struct definitions sorted */
> >
> > +struct intel_display_bo_interface {
> > + bool (*is_tiled)(struct drm_gem_object *obj); /* Optional */
> > + bool (*is_userptr)(struct drm_gem_object *obj); /* Optional */
> > + bool (*is_shmem)(struct drm_gem_object *obj); /* Optional */
> > + bool (*is_protected)(struct drm_gem_object *obj);
> > + int (*key_check)(struct drm_gem_object *obj);
> > + int (*fb_mmap)(struct drm_gem_object *obj, struct vm_area_struct
> > *vma);
> > + int (*read_from_page)(struct drm_gem_object *obj, u64 offset, void
> > *dst, int size);
> > + void (*describe)(struct seq_file *m, struct drm_gem_object *obj); /*
> > +Optional */ };
> > +
> > struct intel_display_dpt_interface {
> > struct intel_dpt *(*create)(struct drm_gem_object *obj, size_t size);
> > void (*destroy)(struct intel_dpt *dpt); @@ -174,6 +187,9 @@ struct
> > intel_display_vma_interface {
> > * check the optional pointers.
> > */
> > struct intel_display_parent_interface {
> > + /** @bo: BO interface */
> > + const struct intel_display_bo_interface *bo;
> > +
> > /** @dpt: DPT interface. Optional. */
> > const struct intel_display_dpt_interface *dpt;
> >
> > --
> > 2.47.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✓ i915.CI.Full: success for drm/{i915,xe}: move bo stuff to parent interface
2026-03-11 14:18 [PATCH 0/5] drm/{i915,xe}: move bo stuff to parent interface Jani Nikula
` (5 preceding siblings ...)
2026-03-11 15:33 ` ✓ i915.CI.BAT: success for drm/{i915,xe}: move bo stuff " Patchwork
@ 2026-03-12 6:37 ` Patchwork
6 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-03-12 6:37 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 93190 bytes --]
== Series Details ==
Series: drm/{i915,xe}: move bo stuff to parent interface
URL : https://patchwork.freedesktop.org/series/163033/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_18130_full -> Patchwork_163033v1_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (10 -> 10)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in Patchwork_163033v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@object-reloc-keep-cache:
- shard-rkl: NOTRUN -> [SKIP][1] ([i915#8411])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@api_intel_bb@object-reloc-keep-cache.html
* igt@gem_bad_reloc@negative-reloc-lut:
- shard-rkl: NOTRUN -> [SKIP][2] ([i915#3281]) +5 other tests skip
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@gem_bad_reloc@negative-reloc-lut.html
* igt@gem_close_race@multigpu-basic-process:
- shard-rkl: NOTRUN -> [SKIP][3] ([i915#7697])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@gem_close_race@multigpu-basic-process.html
* igt@gem_create@create-ext-cpu-access-big:
- shard-tglu: NOTRUN -> [SKIP][4] ([i915#6335])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@gem_create@create-ext-cpu-access-big.html
* igt@gem_ctx_persistence@engines-persistence:
- shard-snb: NOTRUN -> [SKIP][5] ([i915#1099]) +2 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-snb6/igt@gem_ctx_persistence@engines-persistence.html
* igt@gem_ctx_sseu@engines:
- shard-tglu-1: NOTRUN -> [SKIP][6] ([i915#280])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@gem_ctx_sseu@engines.html
* igt@gem_eio@unwedge-stress:
- shard-snb: NOTRUN -> [FAIL][7] ([i915#8898]) +1 other test fail
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-snb6/igt@gem_eio@unwedge-stress.html
* igt@gem_exec_balancer@parallel-balancer:
- shard-tglu: NOTRUN -> [SKIP][8] ([i915#4525]) +1 other test skip
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@gem_exec_balancer@parallel-balancer.html
* igt@gem_exec_balancer@parallel-ordering:
- shard-tglu-1: NOTRUN -> [SKIP][9] ([i915#4525])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@gem_exec_balancer@parallel-ordering.html
* igt@gem_exec_capture@capture-recoverable:
- shard-rkl: NOTRUN -> [SKIP][10] ([i915#6344])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@gem_exec_capture@capture-recoverable.html
* igt@gem_exec_suspend@basic-s0:
- shard-rkl: [PASS][11] -> [INCOMPLETE][12] ([i915#13356]) +1 other test incomplete
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-7/igt@gem_exec_suspend@basic-s0.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@gem_exec_suspend@basic-s0.html
* igt@gem_exec_suspend@basic-s3:
- shard-glk11: NOTRUN -> [INCOMPLETE][13] ([i915#13196] / [i915#13356]) +1 other test incomplete
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk11/igt@gem_exec_suspend@basic-s3.html
* igt@gem_huc_copy@huc-copy:
- shard-tglu: NOTRUN -> [SKIP][14] ([i915#2190])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@basic:
- shard-glk: NOTRUN -> [SKIP][15] ([i915#4613]) +2 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk6/igt@gem_lmem_swapping@basic.html
* igt@gem_lmem_swapping@parallel-random-verify:
- shard-tglu-1: NOTRUN -> [SKIP][16] ([i915#4613])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@gem_lmem_swapping@parallel-random-verify.html
* igt@gem_lmem_swapping@verify-ccs:
- shard-tglu: NOTRUN -> [SKIP][17] ([i915#4613]) +2 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@gem_lmem_swapping@verify-ccs.html
* igt@gem_pwrite@basic-exhaustion:
- shard-glk: NOTRUN -> [WARN][18] ([i915#14702] / [i915#2658])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk9/igt@gem_pwrite@basic-exhaustion.html
* igt@gem_pxp@hw-rejects-pxp-context:
- shard-tglu: NOTRUN -> [SKIP][19] ([i915#13398])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@gem_pxp@hw-rejects-pxp-context.html
* igt@gem_tiled_partial_pwrite_pread@reads:
- shard-rkl: NOTRUN -> [SKIP][20] ([i915#3282])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@gem_tiled_partial_pwrite_pread@reads.html
* igt@gem_userptr_blits@create-destroy-unsync:
- shard-tglu: NOTRUN -> [SKIP][21] ([i915#3297]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@gem_userptr_blits@create-destroy-unsync.html
* igt@gem_userptr_blits@dmabuf-sync:
- shard-glk: NOTRUN -> [SKIP][22] ([i915#3323])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk9/igt@gem_userptr_blits@dmabuf-sync.html
* igt@gem_userptr_blits@readonly-pwrite-unsync:
- shard-tglu-1: NOTRUN -> [SKIP][23] ([i915#3297])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@gem_userptr_blits@readonly-pwrite-unsync.html
* igt@gen9_exec_parse@allowed-single:
- shard-glk: [PASS][24] -> [ABORT][25] ([i915#5566])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-glk2/igt@gen9_exec_parse@allowed-single.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk4/igt@gen9_exec_parse@allowed-single.html
* igt@gen9_exec_parse@bb-secure:
- shard-tglu-1: NOTRUN -> [SKIP][26] ([i915#2527] / [i915#2856])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@gen9_exec_parse@bb-secure.html
* igt@gen9_exec_parse@bb-start-out:
- shard-rkl: NOTRUN -> [SKIP][27] ([i915#2527])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@gen9_exec_parse@bb-start-out.html
* igt@gen9_exec_parse@bb-start-param:
- shard-tglu: NOTRUN -> [SKIP][28] ([i915#2527] / [i915#2856]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@gen9_exec_parse@bb-start-param.html
* igt@i915_module_load@fault-injection@__uc_init:
- shard-rkl: NOTRUN -> [SKIP][29] ([i915#15479]) +4 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@i915_module_load@fault-injection@__uc_init.html
* igt@i915_module_load@fault-injection@intel_connector_register:
- shard-rkl: NOTRUN -> [ABORT][30] ([i915#15342]) +1 other test abort
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@i915_module_load@fault-injection@intel_connector_register.html
* igt@i915_pm_freq_api@freq-suspend:
- shard-rkl: NOTRUN -> [SKIP][31] ([i915#8399])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@i915_pm_freq_api@freq-suspend.html
* igt@i915_pm_rc6_residency@rc6-fence:
- shard-tglu: NOTRUN -> [WARN][32] ([i915#13790] / [i915#2681]) +1 other test warn
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@i915_pm_rc6_residency@rc6-fence.html
* igt@i915_pm_rc6_residency@rc6-idle:
- shard-tglu-1: NOTRUN -> [SKIP][33] ([i915#14498])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@i915_pm_rc6_residency@rc6-idle.html
* igt@i915_pm_rps@reset:
- shard-snb: [PASS][34] -> [INCOMPLETE][35] ([i915#13821])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-snb6/igt@i915_pm_rps@reset.html
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-snb1/igt@i915_pm_rps@reset.html
* igt@i915_query@hwconfig_table:
- shard-rkl: NOTRUN -> [SKIP][36] ([i915#6245])
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@i915_query@hwconfig_table.html
* igt@i915_query@test-query-geometry-subslices:
- shard-rkl: NOTRUN -> [SKIP][37] ([i915#5723])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@i915_query@test-query-geometry-subslices.html
* igt@i915_suspend@debugfs-reader:
- shard-glk: NOTRUN -> [INCOMPLETE][38] ([i915#4817]) +1 other test incomplete
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk5/igt@i915_suspend@debugfs-reader.html
* igt@i915_suspend@fence-restore-tiled2untiled:
- shard-rkl: [PASS][39] -> [INCOMPLETE][40] ([i915#4817])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-4/igt@i915_suspend@fence-restore-tiled2untiled.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@i915_suspend@fence-restore-tiled2untiled.html
* igt@kms_atomic_transition@plane-all-modeset-transition:
- shard-dg1: [PASS][41] -> [DMESG-WARN][42] ([i915#4423])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-12/igt@kms_atomic_transition@plane-all-modeset-transition.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-12/igt@kms_atomic_transition@plane-all-modeset-transition.html
* igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [FAIL][43] ([i915#5956])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-8/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-3.html
* igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1:
- shard-mtlp: [PASS][44] -> [FAIL][45] ([i915#5956]) +1 other test fail
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-mtlp-2/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-mtlp-4/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html
* igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-3:
- shard-dg2: [PASS][46] -> [FAIL][47] ([i915#5956]) +2 other tests fail
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg2-5/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-3.html
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-5/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-3.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-180:
- shard-rkl: NOTRUN -> [SKIP][48] ([i915#5286])
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html
* igt@kms_big_fb@4-tiled-addfb:
- shard-tglu: NOTRUN -> [SKIP][49] ([i915#5286]) +5 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_big_fb@4-tiled-addfb.html
* igt@kms_big_fb@4-tiled-addfb-size-overflow:
- shard-tglu-1: NOTRUN -> [SKIP][50] ([i915#5286]) +2 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_big_fb@4-tiled-addfb-size-overflow.html
* igt@kms_big_fb@linear-64bpp-rotate-90:
- shard-rkl: NOTRUN -> [SKIP][51] ([i915#3638]) +4 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_big_fb@linear-64bpp-rotate-90.html
* igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180:
- shard-glk11: NOTRUN -> [DMESG-WARN][52] ([i915#118])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk11/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
- shard-rkl: NOTRUN -> [SKIP][53] +3 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html
* igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
- shard-tglu: NOTRUN -> [SKIP][54] ([i915#12313])
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html
* igt@kms_ccs@bad-rotation-90-y-tiled-ccs@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][55] ([i915#6095]) +63 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-2/igt@kms_ccs@bad-rotation-90-y-tiled-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][56] ([i915#6095]) +39 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][57] ([i915#6095]) +23 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-8/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-3.html
* igt@kms_ccs@crc-primary-basic-y-tiled-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][58] ([i915#6095]) +24 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_ccs@crc-primary-basic-y-tiled-ccs.html
* igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][59] ([i915#10307] / [i915#10434] / [i915#6095]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-4/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][60] ([i915#14098] / [i915#14544] / [i915#6095]) +2 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][61] ([i915#10307] / [i915#6095]) +49 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-4/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs:
- shard-glk10: NOTRUN -> [INCOMPLETE][62] ([i915#15582]) +1 other test incomplete
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk10/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][63] ([i915#12313])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs:
- shard-rkl: NOTRUN -> [SKIP][64] ([i915#12313]) +1 other test skip
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs@pipe-c-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][65] ([i915#14098] / [i915#6095]) +39 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-2/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs@pipe-c-hdmi-a-1.html
* igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][66] ([i915#14544] / [i915#6095]) +5 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-a-hdmi-a-2.html
* igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1:
- shard-dg1: NOTRUN -> [SKIP][67] ([i915#6095]) +155 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-14/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-2:
- shard-glk10: NOTRUN -> [SKIP][68] +52 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk10/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [SKIP][69] +228 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk6/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-a-hdmi-a-1.html
* igt@kms_cdclk@plane-scaling:
- shard-tglu: NOTRUN -> [SKIP][70] ([i915#3742])
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_cdclk@plane-scaling.html
* igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][71] ([i915#13783]) +3 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-1/igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3.html
* igt@kms_chamelium_edid@dp-edid-resolution-list:
- shard-tglu: NOTRUN -> [SKIP][72] ([i915#11151] / [i915#7828]) +5 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_chamelium_edid@dp-edid-resolution-list.html
* igt@kms_chamelium_frames@hdmi-crc-multiple:
- shard-rkl: NOTRUN -> [SKIP][73] ([i915#11151] / [i915#7828]) +3 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_chamelium_frames@hdmi-crc-multiple.html
* igt@kms_chamelium_hpd@dp-hpd-after-suspend:
- shard-glk11: NOTRUN -> [SKIP][74] +143 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk11/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
* igt@kms_chamelium_hpd@dp-hpd-storm-disable:
- shard-tglu-1: NOTRUN -> [SKIP][75] ([i915#11151] / [i915#7828]) +4 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_chamelium_hpd@dp-hpd-storm-disable.html
* igt@kms_content_protection@atomic-dpms-hdcp14:
- shard-tglu-1: NOTRUN -> [SKIP][76] ([i915#6944])
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_content_protection@atomic-dpms-hdcp14.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-tglu: NOTRUN -> [SKIP][77] ([i915#15330] / [i915#3116] / [i915#3299]) +1 other test skip
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_content_protection@uevent:
- shard-tglu-1: NOTRUN -> [SKIP][78] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-rkl: NOTRUN -> [SKIP][79] ([i915#13049])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_cursor_crc@cursor-offscreen-512x512.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-tglu: NOTRUN -> [SKIP][80] ([i915#13049])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x10:
- shard-tglu: NOTRUN -> [SKIP][81] ([i915#3555]) +4 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x32:
- shard-tglu-1: NOTRUN -> [SKIP][82] ([i915#3555])
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_cursor_crc@cursor-rapid-movement-32x32.html
* igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1:
- shard-tglu-1: NOTRUN -> [FAIL][83] ([i915#13566]) +1 other test fail
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1.html
* igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [FAIL][84] ([i915#13566])
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1.html
* igt@kms_cursor_crc@cursor-sliding-512x170:
- shard-tglu-1: NOTRUN -> [SKIP][85] ([i915#13049])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_cursor_crc@cursor-sliding-512x170.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-tglu: NOTRUN -> [SKIP][86] ([i915#4103])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
- shard-rkl: NOTRUN -> [SKIP][87] ([i915#4103])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc:
- shard-tglu: NOTRUN -> [SKIP][88] ([i915#1769] / [i915#3555] / [i915#3804])
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][89] ([i915#3804])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-tglu-1: NOTRUN -> [SKIP][90] ([i915#13748])
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_dp_link_training@uhbr-mst.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-rkl: NOTRUN -> [SKIP][91] ([i915#3840])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-rkl: NOTRUN -> [SKIP][92] ([i915#3555] / [i915#3840]) +1 other test skip
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-tglu: NOTRUN -> [SKIP][93] ([i915#3840] / [i915#9053])
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-rkl: [PASS][94] -> [INCOMPLETE][95] ([i915#9878])
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-8/igt@kms_fbcon_fbt@fbc-suspend.html
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_feature_discovery@display-2x:
- shard-tglu-1: NOTRUN -> [SKIP][96] ([i915#1839])
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_feature_discovery@display-2x.html
* igt@kms_feature_discovery@psr1:
- shard-tglu: NOTRUN -> [SKIP][97] ([i915#658]) +1 other test skip
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_feature_discovery@psr1.html
* igt@kms_flip@2x-blocking-wf_vblank:
- shard-rkl: NOTRUN -> [SKIP][98] ([i915#9934]) +5 other tests skip
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_flip@2x-blocking-wf_vblank.html
* igt@kms_flip@2x-flip-vs-rmfb-interruptible:
- shard-tglu-1: NOTRUN -> [SKIP][99] ([i915#3637] / [i915#9934])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html
* igt@kms_flip@2x-flip-vs-suspend-interruptible:
- shard-glk10: NOTRUN -> [INCOMPLETE][100] ([i915#12745] / [i915#4839])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk10/igt@kms_flip@2x-flip-vs-suspend-interruptible.html
* igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a1-hdmi-a2:
- shard-glk10: NOTRUN -> [INCOMPLETE][101] ([i915#4839])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk10/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a1-hdmi-a2.html
* igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-tglu: NOTRUN -> [SKIP][102] ([i915#3637] / [i915#9934]) +7 other tests skip
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
* igt@kms_flip@flip-vs-expired-vblank@a-hdmi-a4:
- shard-dg1: [PASS][103] -> [FAIL][104] ([i915#13027]) +1 other test fail
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-18/igt@kms_flip@flip-vs-expired-vblank@a-hdmi-a4.html
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-17/igt@kms_flip@flip-vs-expired-vblank@a-hdmi-a4.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling:
- shard-tglu: NOTRUN -> [SKIP][105] ([i915#15643]) +1 other test skip
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
- shard-tglu-1: NOTRUN -> [SKIP][106] ([i915#15643])
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
- shard-rkl: NOTRUN -> [SKIP][107] ([i915#15643])
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-plflip-blt:
- shard-tglu: NOTRUN -> [SKIP][108] +44 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-mmap-wc:
- shard-snb: NOTRUN -> [SKIP][109] +144 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-snb6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
- shard-tglu-1: NOTRUN -> [SKIP][110] +24 other tests skip
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
- shard-rkl: NOTRUN -> [SKIP][111] ([i915#1825]) +22 other tests skip
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-modesetfrombusy:
- shard-tglu: NOTRUN -> [SKIP][112] ([i915#15102]) +15 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_frontbuffer_tracking@fbcpsr-modesetfrombusy.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
- shard-tglu-1: NOTRUN -> [SKIP][113] ([i915#5439])
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-blt:
- shard-rkl: NOTRUN -> [SKIP][114] ([i915#15102])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-gtt:
- shard-tglu-1: NOTRUN -> [SKIP][115] ([i915#15102]) +9 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-rgb565-draw-render:
- shard-rkl: NOTRUN -> [SKIP][116] ([i915#15102] / [i915#3023]) +9 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-rgb565-draw-render.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-rkl: [PASS][117] -> [SKIP][118] ([i915#3555] / [i915#8228])
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_hdr@bpc-switch-dpms.html
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_hdr@invalid-hdr:
- shard-rkl: NOTRUN -> [SKIP][119] ([i915#3555] / [i915#8228])
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_hdr@invalid-hdr.html
* igt@kms_hdr@static-swap:
- shard-tglu: NOTRUN -> [SKIP][120] ([i915#3555] / [i915#8228])
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@kms_hdr@static-swap.html
* igt@kms_hdr@static-toggle:
- shard-tglu-1: NOTRUN -> [SKIP][121] ([i915#3555] / [i915#8228])
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_hdr@static-toggle.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-rkl: NOTRUN -> [SKIP][122] ([i915#15815])
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping:
- shard-tglu: NOTRUN -> [SKIP][123] ([i915#15709]) +3 other tests skip
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping.html
* igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier-source-clamping:
- shard-tglu-1: NOTRUN -> [SKIP][124] ([i915#15709]) +2 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier-source-clamping.html
* igt@kms_plane@pixel-format-yf-tiled-ccs-modifier:
- shard-rkl: NOTRUN -> [SKIP][125] ([i915#15709]) +1 other test skip
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier.html
* igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
- shard-glk: NOTRUN -> [INCOMPLETE][126] ([i915#13026]) +1 other test incomplete
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk6/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
* igt@kms_plane_multiple@2x-tiling-4:
- shard-rkl: NOTRUN -> [SKIP][127] ([i915#13958])
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_plane_multiple@2x-tiling-4.html
* igt@kms_plane_multiple@2x-tiling-y:
- shard-tglu: NOTRUN -> [SKIP][128] ([i915#13958])
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@kms_plane_multiple@2x-tiling-y.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
- shard-rkl: NOTRUN -> [SKIP][129] ([i915#15329] / [i915#3555])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b:
- shard-rkl: NOTRUN -> [SKIP][130] ([i915#15329]) +2 other tests skip
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html
* igt@kms_pm_backlight@bad-brightness:
- shard-tglu: NOTRUN -> [SKIP][131] ([i915#9812])
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_pm_backlight@bad-brightness.html
* igt@kms_pm_backlight@fade-with-suspend:
- shard-rkl: NOTRUN -> [SKIP][132] ([i915#5354])
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_pm_backlight@fade-with-suspend.html
* igt@kms_pm_dc@dc5-retention-flops:
- shard-rkl: NOTRUN -> [SKIP][133] ([i915#3828]) +1 other test skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_pm_dc@dc5-retention-flops.html
* igt@kms_pm_dc@dc6-psr:
- shard-tglu-1: NOTRUN -> [SKIP][134] ([i915#9685])
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_pm_dc@dc6-psr.html
* igt@kms_pm_lpsp@screens-disabled:
- shard-tglu: NOTRUN -> [SKIP][135] ([i915#8430])
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_pm_lpsp@screens-disabled.html
* igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
- shard-dg1: [PASS][136] -> [SKIP][137] ([i915#15073])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-14/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-13/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-tglu: NOTRUN -> [SKIP][138] ([i915#15073])
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
- shard-rkl: [PASS][139] -> [SKIP][140] ([i915#15073]) +1 other test skip
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
* igt@kms_pm_rpm@system-suspend-modeset:
- shard-glk: NOTRUN -> [INCOMPLETE][141] ([i915#10553])
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk8/igt@kms_pm_rpm@system-suspend-modeset.html
- shard-rkl: [PASS][142] -> [INCOMPLETE][143] ([i915#14419])
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_pm_rpm@system-suspend-modeset.html
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_pm_rpm@system-suspend-modeset.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf:
- shard-rkl: NOTRUN -> [SKIP][144] ([i915#11520]) +2 other tests skip
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf:
- shard-tglu-1: NOTRUN -> [SKIP][145] ([i915#11520]) +2 other tests skip
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@pr-cursor-plane-update-sf:
- shard-tglu: NOTRUN -> [SKIP][146] ([i915#11520]) +5 other tests skip
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_psr2_sf@pr-cursor-plane-update-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area:
- shard-glk: NOTRUN -> [SKIP][147] ([i915#11520]) +4 other tests skip
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk9/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-snb: NOTRUN -> [SKIP][148] ([i915#11520]) +2 other tests skip
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-snb1/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
- shard-glk10: NOTRUN -> [SKIP][149] ([i915#11520]) +1 other test skip
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk10/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-sf:
- shard-glk11: NOTRUN -> [SKIP][150] ([i915#11520]) +5 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk11/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_su@page_flip-p010:
- shard-tglu: NOTRUN -> [SKIP][151] ([i915#9683])
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-6/igt@kms_psr2_su@page_flip-p010.html
* igt@kms_psr@fbc-pr-cursor-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][152] ([i915#1072] / [i915#9732]) +10 other tests skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_psr@fbc-pr-cursor-mmap-gtt.html
* igt@kms_psr@fbc-pr-suspend:
- shard-tglu: NOTRUN -> [SKIP][153] ([i915#9732]) +11 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_psr@fbc-pr-suspend.html
* igt@kms_psr@psr2-sprite-mmap-gtt:
- shard-tglu-1: NOTRUN -> [SKIP][154] ([i915#9732]) +10 other tests skip
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_psr@psr2-sprite-mmap-gtt.html
* igt@kms_rotation_crc@multiplane-rotation:
- shard-glk: NOTRUN -> [INCOMPLETE][155] ([i915#15492])
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk9/igt@kms_rotation_crc@multiplane-rotation.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-tglu-1: NOTRUN -> [SKIP][156] ([i915#5289]) +1 other test skip
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-rkl: NOTRUN -> [SKIP][157] ([i915#5289])
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_selftest@drm_framebuffer:
- shard-tglu: NOTRUN -> [ABORT][158] ([i915#13179]) +1 other test abort
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@kms_selftest@drm_framebuffer.html
* igt@kms_setmode@basic-clone-single-crtc:
- shard-rkl: NOTRUN -> [SKIP][159] ([i915#3555]) +3 other tests skip
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_setmode@basic-clone-single-crtc.html
* igt@kms_vrr@max-min:
- shard-rkl: NOTRUN -> [SKIP][160] ([i915#9906])
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_vrr@max-min.html
* igt@kms_vrr@seamless-rr-switch-drrs:
- shard-tglu-1: NOTRUN -> [SKIP][161] ([i915#9906])
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-1/igt@kms_vrr@seamless-rr-switch-drrs.html
* igt@perf_pmu@busy-double-start@rcs0:
- shard-mtlp: [PASS][162] -> [FAIL][163] ([i915#4349])
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-mtlp-1/igt@perf_pmu@busy-double-start@rcs0.html
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-mtlp-4/igt@perf_pmu@busy-double-start@rcs0.html
* igt@perf_pmu@busy-double-start@vecs1:
- shard-dg2: [PASS][164] -> [FAIL][165] ([i915#4349]) +4 other tests fail
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg2-6/igt@perf_pmu@busy-double-start@vecs1.html
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-5/igt@perf_pmu@busy-double-start@vecs1.html
* igt@prime_vgem@basic-write:
- shard-rkl: NOTRUN -> [SKIP][166] ([i915#3291] / [i915#3708])
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@prime_vgem@basic-write.html
* igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
- shard-tglu: NOTRUN -> [FAIL][167] ([i915#12910])
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-tglu-10/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
#### Possible fixes ####
* igt@drm_read@fault-buffer:
- shard-dg1: [DMESG-WARN][168] ([i915#4423]) -> [PASS][169] +1 other test pass
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-19/igt@drm_read@fault-buffer.html
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-18/igt@drm_read@fault-buffer.html
* igt@gem_lmem_swapping@smem-oom:
- shard-dg1: [FAIL][170] ([i915#15734]) -> [PASS][171]
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-13/igt@gem_lmem_swapping@smem-oom.html
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-16/igt@gem_lmem_swapping@smem-oom.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg1: [CRASH][172] ([i915#5493]) -> [PASS][173]
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-13/igt@gem_lmem_swapping@smem-oom@lmem0.html
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-16/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@gem_workarounds@suspend-resume-fd:
- shard-glk: [INCOMPLETE][174] ([i915#13356] / [i915#14586]) -> [PASS][175]
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-glk8/igt@gem_workarounds@suspend-resume-fd.html
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk9/igt@gem_workarounds@suspend-resume-fd.html
* igt@i915_selftest@live:
- shard-mtlp: [DMESG-FAIL][176] ([i915#12061] / [i915#15560]) -> [PASS][177]
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-mtlp-5/igt@i915_selftest@live.html
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-mtlp-2/igt@i915_selftest@live.html
* igt@i915_selftest@live@workarounds:
- shard-mtlp: [DMESG-FAIL][178] ([i915#12061]) -> [PASS][179]
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-mtlp-5/igt@i915_selftest@live@workarounds.html
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-mtlp-2/igt@i915_selftest@live@workarounds.html
* igt@i915_suspend@basic-s2idle-without-i915:
- shard-dg1: [DMESG-WARN][180] ([i915#4391] / [i915#4423]) -> [PASS][181]
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-18/igt@i915_suspend@basic-s2idle-without-i915.html
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-17/igt@i915_suspend@basic-s2idle-without-i915.html
* igt@kms_cursor_crc@cursor-suspend:
- shard-rkl: [INCOMPLETE][182] ([i915#12358] / [i915#14152]) -> [PASS][183]
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-3/igt@kms_cursor_crc@cursor-suspend.html
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_cursor_crc@cursor-suspend.html
* igt@kms_force_connector_basic@force-edid:
- shard-mtlp: [SKIP][184] ([i915#15672]) -> [PASS][185]
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-mtlp-1/igt@kms_force_connector_basic@force-edid.html
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-mtlp-5/igt@kms_force_connector_basic@force-edid.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-dg2: [SKIP][186] ([i915#9340]) -> [PASS][187]
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg2-6/igt@kms_pm_lpsp@kms-lpsp.html
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-4/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_pm_rpm@dpms-lpsp:
- shard-rkl: [SKIP][188] ([i915#15073]) -> [PASS][189] +2 other tests pass
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-4/igt@kms_pm_rpm@dpms-lpsp.html
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-5/igt@kms_pm_rpm@dpms-lpsp.html
* igt@kms_pm_rpm@dpms-mode-unset-lpsp:
- shard-dg2: [SKIP][190] ([i915#15073]) -> [PASS][191]
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg2-5/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-4/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
* igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2:
- shard-rkl: [INCOMPLETE][192] ([i915#12276]) -> [PASS][193] +1 other test pass
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-3/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2.html
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2.html
* igt@testdisplay:
- shard-snb: [DMESG-WARN][194] -> [PASS][195]
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-snb5/igt@testdisplay.html
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-snb4/igt@testdisplay.html
#### Warnings ####
* igt@gem_ccs@block-multicopy-inplace:
- shard-rkl: [SKIP][196] ([i915#14544] / [i915#3555] / [i915#9323]) -> [SKIP][197] ([i915#3555] / [i915#9323])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@gem_ccs@block-multicopy-inplace.html
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@gem_ccs@block-multicopy-inplace.html
* igt@gem_create@create-ext-cpu-access-big:
- shard-rkl: [SKIP][198] ([i915#6335]) -> [SKIP][199] ([i915#14544] / [i915#6335])
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@gem_create@create-ext-cpu-access-big.html
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@gem_create@create-ext-cpu-access-big.html
* igt@gem_exec_balancer@parallel:
- shard-rkl: [SKIP][200] ([i915#4525]) -> [SKIP][201] ([i915#14544] / [i915#4525])
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@gem_exec_balancer@parallel.html
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@gem_exec_balancer@parallel.html
* igt@gem_exec_reloc@basic-cpu-noreloc:
- shard-rkl: [SKIP][202] ([i915#3281]) -> [SKIP][203] ([i915#14544] / [i915#3281]) +2 other tests skip
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-4/igt@gem_exec_reloc@basic-cpu-noreloc.html
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@gem_exec_reloc@basic-cpu-noreloc.html
* igt@gem_exec_reloc@basic-gtt-cpu:
- shard-rkl: [SKIP][204] ([i915#14544] / [i915#3281]) -> [SKIP][205] ([i915#3281]) +3 other tests skip
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-cpu.html
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@gem_exec_reloc@basic-gtt-cpu.html
* igt@gem_lmem_swapping@parallel-random-verify-ccs:
- shard-rkl: [SKIP][206] ([i915#14544] / [i915#4613]) -> [SKIP][207] ([i915#4613]) +1 other test skip
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@gem_lmem_swapping@parallel-random-verify-ccs.html
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@gem_lmem_swapping@parallel-random-verify-ccs.html
* igt@gem_partial_pwrite_pread@writes-after-reads:
- shard-rkl: [SKIP][208] ([i915#3282]) -> [SKIP][209] ([i915#14544] / [i915#3282]) +3 other tests skip
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-4/igt@gem_partial_pwrite_pread@writes-after-reads.html
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads.html
* igt@gem_partial_pwrite_pread@writes-after-reads-uncached:
- shard-rkl: [SKIP][210] ([i915#14544] / [i915#3282]) -> [SKIP][211] ([i915#3282]) +6 other tests skip
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html
* igt@gem_pxp@hw-rejects-pxp-context:
- shard-rkl: [SKIP][212] ([i915#13717]) -> [SKIP][213] ([i915#13717] / [i915#14544])
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@gem_pxp@hw-rejects-pxp-context.html
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@gem_pxp@hw-rejects-pxp-context.html
* igt@gem_set_tiling_vs_blt@tiled-to-untiled:
- shard-rkl: [SKIP][214] ([i915#8411]) -> [SKIP][215] ([i915#14544] / [i915#8411])
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
* igt@gem_softpin@evict-snoop:
- shard-rkl: [SKIP][216] -> [SKIP][217] ([i915#14544]) +12 other tests skip
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-4/igt@gem_softpin@evict-snoop.html
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@gem_softpin@evict-snoop.html
* igt@gem_userptr_blits@create-destroy-unsync:
- shard-rkl: [SKIP][218] ([i915#3297]) -> [SKIP][219] ([i915#14544] / [i915#3297]) +1 other test skip
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@gem_userptr_blits@create-destroy-unsync.html
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@gem_userptr_blits@create-destroy-unsync.html
* igt@gem_userptr_blits@invalid-mmap-offset-unsync:
- shard-rkl: [SKIP][220] ([i915#14544] / [i915#3297]) -> [SKIP][221] ([i915#3297])
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html
* igt@gen9_exec_parse@bb-oversize:
- shard-rkl: [SKIP][222] ([i915#14544] / [i915#2527]) -> [SKIP][223] ([i915#2527]) +1 other test skip
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@gen9_exec_parse@bb-oversize.html
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@gen9_exec_parse@bb-oversize.html
* igt@i915_pm_freq_api@freq-basic-api:
- shard-rkl: [SKIP][224] ([i915#14544] / [i915#8399]) -> [SKIP][225] ([i915#8399])
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@i915_pm_freq_api@freq-basic-api.html
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@i915_pm_freq_api@freq-basic-api.html
* igt@i915_pm_freq_api@freq-reset-multiple:
- shard-rkl: [SKIP][226] ([i915#8399]) -> [SKIP][227] ([i915#14544] / [i915#8399])
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@i915_pm_freq_api@freq-reset-multiple.html
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@i915_pm_freq_api@freq-reset-multiple.html
* igt@i915_power@sanity:
- shard-rkl: [SKIP][228] ([i915#14544] / [i915#7984]) -> [SKIP][229] ([i915#7984])
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@i915_power@sanity.html
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@i915_power@sanity.html
* igt@i915_suspend@forcewake:
- shard-rkl: [INCOMPLETE][230] ([i915#4817]) -> [ABORT][231] ([i915#15140])
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@i915_suspend@forcewake.html
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-1/igt@i915_suspend@forcewake.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-rkl: [SKIP][232] ([i915#14544] / [i915#1769] / [i915#3555]) -> [SKIP][233] ([i915#1769] / [i915#3555])
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-0:
- shard-rkl: [SKIP][234] ([i915#5286]) -> [SKIP][235] ([i915#14544] / [i915#5286]) +1 other test skip
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_big_fb@4-tiled-32bpp-rotate-0.html
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_big_fb@4-tiled-32bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180:
- shard-rkl: [SKIP][236] ([i915#14544] / [i915#5286]) -> [SKIP][237] ([i915#5286]) +2 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html
* igt@kms_big_fb@y-tiled-8bpp-rotate-270:
- shard-rkl: [SKIP][238] ([i915#3638]) -> [SKIP][239] ([i915#14544] / [i915#3638]) +1 other test skip
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_big_fb@y-tiled-8bpp-rotate-270.html
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_big_fb@y-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-8bpp-rotate-90:
- shard-rkl: [SKIP][240] ([i915#14544] / [i915#3638]) -> [SKIP][241] ([i915#3638]) +3 other tests skip
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-rkl: [SKIP][242] ([i915#14544]) -> [SKIP][243] +6 other tests skip
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-dg1: [SKIP][244] ([i915#4538]) -> [SKIP][245] ([i915#4423] / [i915#4538])
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-16/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-19/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
- shard-rkl: [SKIP][246] ([i915#12313]) -> [SKIP][247] ([i915#12313] / [i915#14544])
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2:
- shard-rkl: [SKIP][248] ([i915#14544] / [i915#6095]) -> [SKIP][249] ([i915#6095]) +9 other tests skip
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2.html
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-2:
- shard-rkl: [SKIP][250] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][251] ([i915#14098] / [i915#6095]) +9 other tests skip
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-2.html
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-2.html
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-rkl: [SKIP][252] ([i915#12313] / [i915#14544]) -> [SKIP][253] ([i915#12313])
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-a-hdmi-a-4:
- shard-dg1: [SKIP][254] ([i915#4423] / [i915#6095]) -> [SKIP][255] ([i915#6095]) +1 other test skip
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-18/igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-a-hdmi-a-4.html
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-17/igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-a-hdmi-a-4.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-rkl: [SKIP][256] ([i915#12805] / [i915#14544]) -> [SKIP][257] ([i915#12805])
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs:
- shard-rkl: [SKIP][258] ([i915#14098] / [i915#6095]) -> [SKIP][259] ([i915#14098] / [i915#14544] / [i915#6095]) +2 other tests skip
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs.html
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-rkl: [SKIP][260] ([i915#3742]) -> [SKIP][261] ([i915#14544] / [i915#3742])
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-4/igt@kms_cdclk@mode-transition-all-outputs.html
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_chamelium_frames@hdmi-cmp-planar-formats:
- shard-rkl: [SKIP][262] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][263] ([i915#11151] / [i915#7828]) +3 other tests skip
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html
* igt@kms_chamelium_hpd@dp-hpd-fast:
- shard-rkl: [SKIP][264] ([i915#11151] / [i915#7828]) -> [SKIP][265] ([i915#11151] / [i915#14544] / [i915#7828]) +4 other tests skip
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-4/igt@kms_chamelium_hpd@dp-hpd-fast.html
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_chamelium_hpd@dp-hpd-fast.html
* igt@kms_content_protection@atomic-dpms:
- shard-rkl: [SKIP][266] ([i915#14544] / [i915#6944] / [i915#7118] / [i915#9424]) -> [SKIP][267] ([i915#6944] / [i915#7118] / [i915#9424])
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_content_protection@atomic-dpms.html
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-rkl: [SKIP][268] ([i915#15330] / [i915#3116]) -> [SKIP][269] ([i915#14544] / [i915#15330] / [i915#3116])
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_content_protection@dp-mst-lic-type-1.html
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@dp-mst-type-1-suspend-resume:
- shard-rkl: [SKIP][270] ([i915#15330]) -> [SKIP][271] ([i915#14544] / [i915#15330])
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_content_protection@dp-mst-type-1-suspend-resume.html
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_content_protection@dp-mst-type-1-suspend-resume.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-rkl: [SKIP][272] ([i915#13049]) -> [SKIP][273] ([i915#13049] / [i915#14544])
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_cursor_crc@cursor-onscreen-512x170.html
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x10:
- shard-rkl: [SKIP][274] ([i915#3555]) -> [SKIP][275] ([i915#14544] / [i915#3555]) +1 other test skip
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
* igt@kms_cursor_crc@cursor-rapid-movement-512x170:
- shard-rkl: [SKIP][276] ([i915#13049] / [i915#14544]) -> [SKIP][277] ([i915#13049])
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-glk: [FAIL][278] ([i915#15804]) -> [FAIL][279] ([i915#15805])
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-rkl: [SKIP][280] ([i915#4103]) -> [SKIP][281] ([i915#14544] / [i915#4103])
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_dirtyfb@psr-dirtyfb-ioctl:
- shard-rkl: [SKIP][282] ([i915#14544] / [i915#9723]) -> [SKIP][283] ([i915#9723])
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
* igt@kms_dp_linktrain_fallback@dsc-fallback:
- shard-rkl: [SKIP][284] ([i915#13707]) -> [SKIP][285] ([i915#13707] / [i915#14544])
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_dp_linktrain_fallback@dsc-fallback.html
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_dp_linktrain_fallback@dsc-fallback.html
* igt@kms_dsc@dsc-basic:
- shard-rkl: [SKIP][286] ([i915#3555] / [i915#3840]) -> [SKIP][287] ([i915#14544] / [i915#3555] / [i915#3840])
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_dsc@dsc-basic.html
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_dsc@dsc-basic.html
* igt@kms_feature_discovery@display-4x:
- shard-rkl: [SKIP][288] ([i915#1839]) -> [SKIP][289] ([i915#14544] / [i915#1839])
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-4/igt@kms_feature_discovery@display-4x.html
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_feature_discovery@display-4x.html
* igt@kms_feature_discovery@psr1:
- shard-rkl: [SKIP][290] ([i915#658]) -> [SKIP][291] ([i915#14544] / [i915#658])
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_feature_discovery@psr1.html
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_feature_discovery@psr1.html
* igt@kms_flip@2x-plain-flip:
- shard-rkl: [SKIP][292] ([i915#9934]) -> [SKIP][293] ([i915#14544] / [i915#9934]) +4 other tests skip
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_flip@2x-plain-flip.html
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_flip@2x-plain-flip.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-rkl: [SKIP][294] ([i915#14544] / [i915#15643]) -> [SKIP][295] ([i915#15643]) +3 other tests skip
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling:
- shard-rkl: [SKIP][296] ([i915#15643]) -> [SKIP][297] ([i915#14544] / [i915#15643]) +2 other tests skip
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc:
- shard-rkl: [SKIP][298] ([i915#1825]) -> [SKIP][299] ([i915#14544] / [i915#1825]) +22 other tests skip
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc.html
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-pwrite:
- shard-rkl: [SKIP][300] ([i915#14544] / [i915#15102]) -> [SKIP][301] ([i915#15102])
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-pwrite.html
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt:
- shard-rkl: [SKIP][302] ([i915#15102]) -> [SKIP][303] ([i915#14544] / [i915#15102]) +1 other test skip
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw:
- shard-rkl: [SKIP][304] ([i915#15102] / [i915#3023]) -> [SKIP][305] ([i915#14544] / [i915#15102] / [i915#3023]) +8 other tests skip
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move:
- shard-rkl: [SKIP][306] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][307] ([i915#15102] / [i915#3023]) +8 other tests skip
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite:
- shard-dg2: [SKIP][308] ([i915#15102] / [i915#3458]) -> [SKIP][309] ([i915#10433] / [i915#15102] / [i915#3458]) +2 other tests skip
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render:
- shard-dg2: [SKIP][310] ([i915#10433] / [i915#15102] / [i915#3458]) -> [SKIP][311] ([i915#15102] / [i915#3458]) +5 other tests skip
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
- shard-rkl: [SKIP][312] ([i915#14544] / [i915#1825]) -> [SKIP][313] ([i915#1825]) +14 other tests skip
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
* igt@kms_hdr@bpc-switch-suspend:
- shard-rkl: [ABORT][314] ([i915#15132]) -> [SKIP][315] ([i915#3555] / [i915#8228])
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-1/igt@kms_hdr@bpc-switch-suspend.html
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-8/igt@kms_hdr@bpc-switch-suspend.html
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- shard-rkl: [SKIP][316] ([i915#14544] / [i915#15458]) -> [SKIP][317] ([i915#15458])
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_joiner@invalid-modeset-ultra-joiner.html
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_joiner@invalid-modeset-ultra-joiner.html
* igt@kms_panel_fitting@legacy:
- shard-rkl: [SKIP][318] ([i915#14544] / [i915#6301]) -> [SKIP][319] ([i915#6301])
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_panel_fitting@legacy.html
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_panel_fitting@legacy.html
* igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier:
- shard-rkl: [SKIP][320] ([i915#15709]) -> [SKIP][321] ([i915#14544] / [i915#15709]) +1 other test skip
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier.html
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier.html
* igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier:
- shard-rkl: [SKIP][322] ([i915#14544] / [i915#15709]) -> [SKIP][323] ([i915#15709]) +2 other tests skip
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html
* igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c:
- shard-rkl: [SKIP][324] ([i915#14544] / [i915#15329]) -> [SKIP][325] ([i915#15329]) +3 other tests skip
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c.html
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c.html
* igt@kms_pm_backlight@bad-brightness:
- shard-rkl: [SKIP][326] ([i915#5354]) -> [SKIP][327] ([i915#14544] / [i915#5354])
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_pm_backlight@bad-brightness.html
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_pm_backlight@bad-brightness.html
* igt@kms_pm_dc@dc5-psr:
- shard-rkl: [SKIP][328] ([i915#14544] / [i915#9685]) -> [SKIP][329] ([i915#9685])
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_pm_dc@dc5-psr.html
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_dc@dc9-dpms:
- shard-rkl: [SKIP][330] ([i915#14544] / [i915#15739]) -> [SKIP][331] ([i915#15739])
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_pm_dc@dc9-dpms.html
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-1/igt@kms_pm_dc@dc9-dpms.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-dg1: [SKIP][332] ([i915#9340]) -> [SKIP][333] ([i915#3828])
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-dg1-12/igt@kms_pm_lpsp@kms-lpsp.html
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-dg1-14/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_pm_lpsp@screens-disabled:
- shard-rkl: [SKIP][334] ([i915#8430]) -> [SKIP][335] ([i915#14544] / [i915#8430])
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_pm_lpsp@screens-disabled.html
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_pm_lpsp@screens-disabled.html
* igt@kms_prime@basic-crc-hybrid:
- shard-rkl: [SKIP][336] ([i915#14544] / [i915#6524]) -> [SKIP][337] ([i915#6524])
[336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_prime@basic-crc-hybrid.html
[337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_prime@basic-crc-hybrid.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf:
- shard-rkl: [SKIP][338] ([i915#11520] / [i915#14544]) -> [SKIP][339] ([i915#11520]) +2 other tests skip
[338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html
[339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-4/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf:
- shard-rkl: [SKIP][340] ([i915#11520]) -> [SKIP][341] ([i915#11520] / [i915#14544]) +5 other tests skip
[340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf.html
[341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf.html
* igt@kms_psr@psr-cursor-mmap-cpu:
- shard-rkl: [SKIP][342] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][343] ([i915#1072] / [i915#9732]) +10 other tests skip
[342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_psr@psr-cursor-mmap-cpu.html
[343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-1/igt@kms_psr@psr-cursor-mmap-cpu.html
* igt@kms_psr@psr-sprite-render:
- shard-rkl: [SKIP][344] ([i915#1072] / [i915#9732]) -> [SKIP][345] ([i915#1072] / [i915#14544] / [i915#9732]) +4 other tests skip
[344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_psr@psr-sprite-render.html
[345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_psr@psr-sprite-render.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-rkl: [SKIP][346] ([i915#9685]) -> [SKIP][347] ([i915#14544] / [i915#9685])
[346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
[347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_scaling_modes@scaling-mode-none:
- shard-rkl: [SKIP][348] ([i915#14544] / [i915#3555]) -> [SKIP][349] ([i915#3555]) +1 other test skip
[348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_scaling_modes@scaling-mode-none.html
[349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_scaling_modes@scaling-mode-none.html
* igt@kms_vrr@flipline:
- shard-rkl: [SKIP][350] ([i915#15243] / [i915#3555]) -> [SKIP][351] ([i915#14544] / [i915#15243] / [i915#3555])
[350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_vrr@flipline.html
[351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_vrr@flipline.html
* igt@kms_vrr@lobf:
- shard-rkl: [SKIP][352] ([i915#11920]) -> [SKIP][353] ([i915#11920] / [i915#14544])
[352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@kms_vrr@lobf.html
[353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@kms_vrr@lobf.html
* igt@kms_vrr@negative-basic:
- shard-rkl: [SKIP][354] ([i915#14544] / [i915#3555] / [i915#9906]) -> [SKIP][355] ([i915#3555] / [i915#9906])
[354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@kms_vrr@negative-basic.html
[355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@kms_vrr@negative-basic.html
* igt@perf@mi-rpc:
- shard-rkl: [SKIP][356] ([i915#2434]) -> [SKIP][357] ([i915#14544] / [i915#2434])
[356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@perf@mi-rpc.html
[357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@perf@mi-rpc.html
* igt@prime_vgem@basic-fence-read:
- shard-rkl: [SKIP][358] ([i915#3291] / [i915#3708]) -> [SKIP][359] ([i915#14544] / [i915#3291] / [i915#3708])
[358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@prime_vgem@basic-fence-read.html
[359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@prime_vgem@basic-fence-read.html
* igt@prime_vgem@fence-write-hang:
- shard-rkl: [SKIP][360] ([i915#14544] / [i915#3708]) -> [SKIP][361] ([i915#3708])
[360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-6/igt@prime_vgem@fence-write-hang.html
[361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-3/igt@prime_vgem@fence-write-hang.html
* igt@sriov_basic@enable-vfs-bind-unbind-each:
- shard-rkl: [SKIP][362] ([i915#9917]) -> [SKIP][363] ([i915#14544] / [i915#9917])
[362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18130/shard-rkl-2/igt@sriov_basic@enable-vfs-bind-unbind-each.html
[363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163033v1/shard-rkl-6/igt@sriov_basic@enable-vfs-bind-unbind-each.html
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10553]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10553
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099
[i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/118
[i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276
[i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
[i915#12358]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12358
[i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
[i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
[i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
[i915#13026]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13026
[i915#13027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13027
[i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
[i915#13179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13179
[i915#13196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13196
[i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
[i915#13398]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13398
[i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
[i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707
[i915#13717]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13717
[i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748
[i915#13783]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13783
[i915#13790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13790
[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#14419]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14419
[i915#14498]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14498
[i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
[i915#14586]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14586
[i915#14702]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14702
[i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
[i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
[i915#15132]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15132
[i915#15140]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15140
[i915#15243]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15243
[i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329
[i915#15330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15330
[i915#15342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15342
[i915#15458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15458
[i915#15479]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15479
[i915#15492]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15492
[i915#15560]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15560
[i915#15582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15582
[i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643
[i915#15672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15672
[i915#15709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15709
[i915#15734]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15734
[i915#15739]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15739
[i915#15804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15804
[i915#15805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15805
[i915#15815]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15815
[i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
[i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
[i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
[i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
[i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
[i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
[i915#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
[i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
[i915#4391]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4391
[i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
[i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
[i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
[i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
[i915#5566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5566
[i915#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723
[i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
[i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
[i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
[i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
[i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
[i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
[i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
[i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
[i915#8898]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8898
[i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
[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#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[i915#9878]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9878
[i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
[i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
[i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
Build changes
-------------
* Linux: CI_DRM_18130 -> Patchwork_163033v1
CI-20190529: 20190529
CI_DRM_18130: 4a30f5fa0fe382b3915a8208a483d0044c40b9eb @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8793: c623172fdd4dd92bb23dbc55b3930c40266c3e59 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_163033v1: 4a30f5fa0fe382b3915a8208a483d0044c40b9eb @ 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_163033v1/index.html
[-- Attachment #2: Type: text/html, Size: 125231 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH 5/5] drm/{i915, xe}: move framebuffer bo to parent interface
2026-03-12 4:25 ` Kandpal, Suraj
@ 2026-03-12 9:00 ` Jani Nikula
2026-03-13 5:12 ` [PATCH 5/5] drm/{i915,xe}: " Kandpal, Suraj
0 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2026-03-12 9:00 UTC (permalink / raw)
To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
On Thu, 12 Mar 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> Subject: [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent interface
>>
>> Add .framebuffer_init, .framebuffer_fini and .framebuffer_lookup to the bo
>> parent interface. While they're about framebuffers, they're specifically about
>> framebuffer objects, so the bo interface is a good enough fit, and there's no
>> need to add another interface struct.
>
> Maybe it can also be mentioned that since we move all the functions from
> Intel_fb_bo to i915_bo.c we can safely remove it.
Sure.
>>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>> drivers/gpu/drm/i915/Makefile | 1 -
>> drivers/gpu/drm/i915/display/intel_bo.c | 21 +++++
>> drivers/gpu/drm/i915/display/intel_bo.h | 9 ++
>> drivers/gpu/drm/i915/display/intel_fb.c | 12 +--
>> drivers/gpu/drm/i915/display/intel_fb_bo.c | 99 --------------------
>> drivers/gpu/drm/i915/display/intel_fb_bo.h | 25 -----
>> drivers/gpu/drm/i915/i915_bo.c | 92 ++++++++++++++++++
>> drivers/gpu/drm/xe/Makefile | 1 -
>> drivers/gpu/drm/xe/display/intel_fb_bo.c | 91 ------------------
>> drivers/gpu/drm/xe/display/xe_display_bo.c | 84 +++++++++++++++++
>> include/drm/intel/display_parent_interface.h | 6 ++
>> 11 files changed, 218 insertions(+), 223 deletions(-) delete mode 100644
>> drivers/gpu/drm/i915/display/intel_fb_bo.c
>> delete mode 100644 drivers/gpu/drm/i915/display/intel_fb_bo.h
>> delete mode 100644 drivers/gpu/drm/xe/display/intel_fb_bo.c
>>
>> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
>> index 425933fb26a5..be976a90c5a6 100644
>> --- a/drivers/gpu/drm/i915/Makefile
>> +++ b/drivers/gpu/drm/i915/Makefile
>> @@ -278,7 +278,6 @@ i915-y += \
>> display/intel_drrs.o \
>> display/intel_dsb.o \
>> display/intel_fb.o \
>> - display/intel_fb_bo.o \
>> display/intel_fb_pin.o \
>> display/intel_fbc.o \
>> display/intel_fdi.o \
>> diff --git a/drivers/gpu/drm/i915/display/intel_bo.c
>> b/drivers/gpu/drm/i915/display/intel_bo.c
>> index e356ab4e0640..3b82d38a0504 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bo.c
>> +++ b/drivers/gpu/drm/i915/display/intel_bo.c
>> @@ -64,3 +64,24 @@ void intel_bo_describe(struct seq_file *m, struct
>> drm_gem_object *obj)
>> if (display->parent->bo->describe)
>> display->parent->bo->describe(m, obj); }
>> +
>> +int intel_bo_framebuffer_init(struct drm_gem_object *obj, struct
>> +drm_mode_fb_cmd2 *mode_cmd) {
>> + struct intel_display *display = to_intel_display(obj->dev);
>> +
>> + return display->parent->bo->framebuffer_init(obj, mode_cmd); }
>> +
>> +void intel_bo_framebuffer_fini(struct drm_gem_object *obj) {
>> + struct intel_display *display = to_intel_display(obj->dev);
>> +
>> + display->parent->bo->framebuffer_fini(obj);
>
> Should we be making this optional . This will help avoid creating dummy functions
> for fini like you have done previously.
I have this gnawing feeling that it should not be a dummy function in
the first place. I haven't actually looked into the bottom of it. That's
why I ended up keeping the dummy.
BR,
Jani.
>
> Regards,
> Suraj Kandpal
>
>> +}
>> +
>> +struct drm_gem_object *intel_bo_framebuffer_lookup(struct intel_display
>> *display,
>> + struct drm_file *filp,
>> + const struct
>> drm_mode_fb_cmd2 *user_mode_cmd) {
>> + return display->parent->bo->framebuffer_lookup(display->drm, filp,
>> +user_mode_cmd); }
>> diff --git a/drivers/gpu/drm/i915/display/intel_bo.h
>> b/drivers/gpu/drm/i915/display/intel_bo.h
>> index 40390ed92ceb..aec188c706c2 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bo.h
>> +++ b/drivers/gpu/drm/i915/display/intel_bo.h
>> @@ -6,8 +6,11 @@
>>
>> #include <linux/types.h>
>>
>> +struct drm_file;
>> struct drm_gem_object;
>> +struct drm_mode_fb_cmd2;
>> struct drm_scanout_buffer;
>> +struct intel_display;
>> struct intel_framebuffer;
>> struct seq_file;
>> struct vm_area_struct;
>> @@ -22,4 +25,10 @@ int intel_bo_read_from_page(struct drm_gem_object
>> *obj, u64 offset, void *dst, i
>>
>> void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj);
>>
>> +void intel_bo_framebuffer_fini(struct drm_gem_object *obj); int
>> +intel_bo_framebuffer_init(struct drm_gem_object *obj, struct
>> +drm_mode_fb_cmd2 *mode_cmd); struct drm_gem_object
>> *intel_bo_framebuffer_lookup(struct intel_display *display,
>> + struct drm_file *filp,
>> + const struct
>> drm_mode_fb_cmd2 *user_mode_cmd);
>> +
>> #endif /* __INTEL_BO__ */
>> diff --git a/drivers/gpu/drm/i915/display/intel_fb.c
>> b/drivers/gpu/drm/i915/display/intel_fb.c
>> index 49c6ca9d94c6..5768619f840f 100644
>> --- a/drivers/gpu/drm/i915/display/intel_fb.c
>> +++ b/drivers/gpu/drm/i915/display/intel_fb.c
>> @@ -17,7 +17,6 @@
>> #include "intel_display_types.h"
>> #include "intel_display_utils.h"
>> #include "intel_fb.h"
>> -#include "intel_fb_bo.h"
>> #include "intel_frontbuffer.h"
>> #include "intel_parent.h"
>> #include "intel_plane.h"
>> @@ -2111,7 +2110,7 @@ static void intel_user_framebuffer_destroy(struct
>> drm_framebuffer *fb)
>> if (intel_fb_uses_dpt(fb))
>> intel_parent_dpt_destroy(display, intel_fb->dpt);
>>
>> - intel_fb_bo_framebuffer_fini(intel_fb_bo(fb));
>> + intel_bo_framebuffer_fini(intel_fb_bo(fb));
>>
>> intel_parent_frontbuffer_put(display, intel_fb->frontbuffer);
>>
>> @@ -2222,7 +2221,7 @@ int intel_framebuffer_init(struct intel_framebuffer
>> *intel_fb,
>>
>> /*
>> * intel_parent_frontbuffer_get() must be done before
>> - * intel_fb_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
>> + * intel_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
>> */
>> intel_fb->frontbuffer = intel_parent_frontbuffer_get(display, obj);
>> if (!intel_fb->frontbuffer) {
>> @@ -2230,7 +2229,7 @@ int intel_framebuffer_init(struct intel_framebuffer
>> *intel_fb,
>> goto err_free_panic;
>> }
>>
>> - ret = intel_fb_bo_framebuffer_init(obj, mode_cmd);
>> + ret = intel_bo_framebuffer_init(obj, mode_cmd);
>> if (ret)
>> goto err_frontbuffer_put;
>>
>> @@ -2333,7 +2332,7 @@ int intel_framebuffer_init(struct intel_framebuffer
>> *intel_fb,
>> if (intel_fb_uses_dpt(fb))
>> intel_parent_dpt_destroy(display, intel_fb->dpt);
>> err_bo_framebuffer_fini:
>> - intel_fb_bo_framebuffer_fini(obj);
>> + intel_bo_framebuffer_fini(obj);
>> err_frontbuffer_put:
>> intel_parent_frontbuffer_put(display, intel_fb->frontbuffer);
>> err_free_panic:
>> @@ -2348,11 +2347,12 @@ intel_user_framebuffer_create(struct
>> drm_device *dev,
>> const struct drm_format_info *info,
>> const struct drm_mode_fb_cmd2
>> *user_mode_cmd) {
>> + struct intel_display *display = to_intel_display(dev);
>> struct drm_framebuffer *fb;
>> struct drm_gem_object *obj;
>> struct drm_mode_fb_cmd2 mode_cmd = *user_mode_cmd;
>>
>> - obj = intel_fb_bo_lookup_valid_bo(dev, filp, &mode_cmd);
>> + obj = intel_bo_framebuffer_lookup(display, filp, &mode_cmd);
>> if (IS_ERR(obj))
>> return ERR_CAST(obj);
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.c
>> b/drivers/gpu/drm/i915/display/intel_fb_bo.c
>> deleted file mode 100644
>> index a4d49ef450d9..000000000000
>> --- a/drivers/gpu/drm/i915/display/intel_fb_bo.c
>> +++ /dev/null
>> @@ -1,99 +0,0 @@
>> -/* SPDX-License-Identifier: MIT */
>> -/*
>> - * Copyright © 2021 Intel Corporation
>> - */
>> -
>> -#include <drm/drm_framebuffer.h>
>> -#include <drm/drm_print.h>
>> -
>> -#include "gem/i915_gem_object.h"
>> -
>> -#include "i915_drv.h"
>> -#include "intel_fb.h"
>> -#include "intel_fb_bo.h"
>> -
>> -void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj) -{
>> - /* Nothing to do for i915 */
>> -}
>> -
>> -int intel_fb_bo_framebuffer_init(struct drm_gem_object *_obj,
>> - struct drm_mode_fb_cmd2 *mode_cmd)
>> -{
>> - struct drm_i915_gem_object *obj = to_intel_bo(_obj);
>> - struct drm_i915_private *i915 = to_i915(obj->base.dev);
>> - unsigned int tiling, stride;
>> -
>> - i915_gem_object_lock(obj, NULL);
>> - tiling = i915_gem_object_get_tiling(obj);
>> - stride = i915_gem_object_get_stride(obj);
>> - i915_gem_object_unlock(obj);
>> -
>> - if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) {
>> - /*
>> - * If there's a fence, enforce that
>> - * the fb modifier and tiling mode match.
>> - */
>> - if (tiling != I915_TILING_NONE &&
>> - tiling != intel_fb_modifier_to_tiling(mode_cmd-
>> >modifier[0])) {
>> - drm_dbg_kms(&i915->drm,
>> - "tiling_mode doesn't match fb modifier\n");
>> - return -EINVAL;
>> - }
>> - } else {
>> - if (tiling == I915_TILING_X) {
>> - mode_cmd->modifier[0] =
>> I915_FORMAT_MOD_X_TILED;
>> - } else if (tiling == I915_TILING_Y) {
>> - drm_dbg_kms(&i915->drm,
>> - "No Y tiling for legacy addfb\n");
>> - return -EINVAL;
>> - }
>> - }
>> -
>> - /*
>> - * gen2/3 display engine uses the fence if present,
>> - * so the tiling mode must match the fb modifier exactly.
>> - */
>> - if (GRAPHICS_VER(i915) < 4 &&
>> - tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
>> - drm_dbg_kms(&i915->drm,
>> - "tiling_mode must match fb modifier exactly on
>> gen2/3\n");
>> - return -EINVAL;
>> - }
>> -
>> - /*
>> - * If there's a fence, enforce that
>> - * the fb pitch and fence stride match.
>> - */
>> - if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
>> - drm_dbg_kms(&i915->drm,
>> - "pitch (%d) must match tiling stride (%d)\n",
>> - mode_cmd->pitches[0], stride);
>> - return -EINVAL;
>> - }
>> -
>> - return 0;
>> -}
>> -
>> -struct drm_gem_object *
>> -intel_fb_bo_lookup_valid_bo(struct drm_device *drm,
>> - struct drm_file *filp,
>> - const struct drm_mode_fb_cmd2 *mode_cmd)
>> -{
>> - struct drm_i915_private *i915 = to_i915(drm);
>> - struct drm_i915_gem_object *obj;
>> -
>> - obj = i915_gem_object_lookup(filp, mode_cmd->handles[0]);
>> - if (!obj)
>> - return ERR_PTR(-ENOENT);
>> -
>> - /* object is backed with LMEM for discrete */
>> - if (HAS_LMEM(i915) && !i915_gem_object_can_migrate(obj,
>> INTEL_REGION_LMEM_0)) {
>> - /* object is "remote", not in local memory */
>> - i915_gem_object_put(obj);
>> - drm_dbg_kms(&i915->drm, "framebuffer must reside in local
>> memory\n");
>> - return ERR_PTR(-EREMOTE);
>> - }
>> -
>> - return intel_bo_to_drm_bo(obj);
>> -}
>> diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.h
>> b/drivers/gpu/drm/i915/display/intel_fb_bo.h
>> deleted file mode 100644
>> index d775773c6c03..000000000000
>> --- a/drivers/gpu/drm/i915/display/intel_fb_bo.h
>> +++ /dev/null
>> @@ -1,25 +0,0 @@
>> -/* SPDX-License-Identifier: MIT */
>> -/*
>> - * Copyright © 2021 Intel Corporation
>> - */
>> -
>> -#ifndef __INTEL_FB_BO_H__
>> -#define __INTEL_FB_BO_H__
>> -
>> -struct drm_device;
>> -struct drm_file;
>> -struct drm_framebuffer;
>> -struct drm_gem_object;
>> -struct drm_mode_fb_cmd2;
>> -
>> -void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj);
>> -
>> -int intel_fb_bo_framebuffer_init(struct drm_gem_object *obj,
>> - struct drm_mode_fb_cmd2 *mode_cmd);
>> -
>> -struct drm_gem_object *
>> -intel_fb_bo_lookup_valid_bo(struct drm_device *drm,
>> - struct drm_file *filp,
>> - const struct drm_mode_fb_cmd2
>> *user_mode_cmd);
>> -
>> -#endif
>> diff --git a/drivers/gpu/drm/i915/i915_bo.c
>> b/drivers/gpu/drm/i915/i915_bo.c index 04fc0e3b7ef6..1789f7cab05c
>> 100644
>> --- a/drivers/gpu/drm/i915/i915_bo.c
>> +++ b/drivers/gpu/drm/i915/i915_bo.c
>> @@ -2,8 +2,10 @@
>> /* Copyright © 2024 Intel Corporation */
>>
>> #include <drm/drm_panic.h>
>> +#include <drm/drm_print.h>
>> #include <drm/intel/display_parent_interface.h>
>>
>> +#include "display/intel_fb.h"
>> #include "gem/i915_gem_mman.h"
>> #include "gem/i915_gem_object.h"
>> #include "gem/i915_gem_object_frontbuffer.h"
>> @@ -11,6 +13,7 @@
>>
>> #include "i915_bo.h"
>> #include "i915_debugfs.h"
>> +#include "i915_drv.h"
>>
>> static bool i915_bo_is_tiled(struct drm_gem_object *obj) { @@ -52,6 +55,92
>> @@ static void i915_bo_describe(struct seq_file *m, struct drm_gem_object
>> *obj)
>> i915_debugfs_describe_obj(m, to_intel_bo(obj)); }
>>
>> +static int i915_bo_framebuffer_init(struct drm_gem_object *_obj,
>> + struct drm_mode_fb_cmd2 *mode_cmd) {
>> + struct drm_i915_gem_object *obj = to_intel_bo(_obj);
>> + struct drm_i915_private *i915 = to_i915(obj->base.dev);
>> + unsigned int tiling, stride;
>> +
>> + i915_gem_object_lock(obj, NULL);
>> + tiling = i915_gem_object_get_tiling(obj);
>> + stride = i915_gem_object_get_stride(obj);
>> + i915_gem_object_unlock(obj);
>> +
>> + if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) {
>> + /*
>> + * If there's a fence, enforce that
>> + * the fb modifier and tiling mode match.
>> + */
>> + if (tiling != I915_TILING_NONE &&
>> + tiling != intel_fb_modifier_to_tiling(mode_cmd-
>> >modifier[0])) {
>> + drm_dbg_kms(&i915->drm,
>> + "tiling_mode doesn't match fb modifier\n");
>> + return -EINVAL;
>> + }
>> + } else {
>> + if (tiling == I915_TILING_X) {
>> + mode_cmd->modifier[0] =
>> I915_FORMAT_MOD_X_TILED;
>> + } else if (tiling == I915_TILING_Y) {
>> + drm_dbg_kms(&i915->drm,
>> + "No Y tiling for legacy addfb\n");
>> + return -EINVAL;
>> + }
>> + }
>> +
>> + /*
>> + * gen2/3 display engine uses the fence if present,
>> + * so the tiling mode must match the fb modifier exactly.
>> + */
>> + if (GRAPHICS_VER(i915) < 4 &&
>> + tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
>> + drm_dbg_kms(&i915->drm,
>> + "tiling_mode must match fb modifier exactly on
>> gen2/3\n");
>> + return -EINVAL;
>> + }
>> +
>> + /*
>> + * If there's a fence, enforce that
>> + * the fb pitch and fence stride match.
>> + */
>> + if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
>> + drm_dbg_kms(&i915->drm,
>> + "pitch (%d) must match tiling stride (%d)\n",
>> + mode_cmd->pitches[0], stride);
>> + return -EINVAL;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> +static void i915_bo_framebuffer_fini(struct drm_gem_object *obj) {
>> + /* Nothing to do for i915 */
>> +}
>> +
>> +static struct drm_gem_object *
>> +i915_bo_framebuffer_lookup(struct drm_device *drm,
>> + struct drm_file *filp,
>> + const struct drm_mode_fb_cmd2 *mode_cmd) {
>> + struct drm_i915_private *i915 = to_i915(drm);
>> + struct drm_i915_gem_object *obj;
>> +
>> + obj = i915_gem_object_lookup(filp, mode_cmd->handles[0]);
>> + if (!obj)
>> + return ERR_PTR(-ENOENT);
>> +
>> + /* object is backed with LMEM for discrete */
>> + if (HAS_LMEM(i915) && !i915_gem_object_can_migrate(obj,
>> INTEL_REGION_LMEM_0)) {
>> + /* object is "remote", not in local memory */
>> + i915_gem_object_put(obj);
>> + drm_dbg_kms(&i915->drm, "framebuffer must reside in local
>> memory\n");
>> + return ERR_PTR(-EREMOTE);
>> + }
>> +
>> + return intel_bo_to_drm_bo(obj);
>> +}
>> +
>> const struct intel_display_bo_interface i915_display_bo_interface = {
>> .is_tiled = i915_bo_is_tiled,
>> .is_userptr = i915_bo_is_userptr,
>> @@ -61,4 +150,7 @@ const struct intel_display_bo_interface
>> i915_display_bo_interface = {
>> .fb_mmap = i915_bo_fb_mmap,
>> .read_from_page = i915_bo_read_from_page,
>> .describe = i915_bo_describe,
>> + .framebuffer_init = i915_bo_framebuffer_init,
>> + .framebuffer_fini = i915_bo_framebuffer_fini,
>> + .framebuffer_lookup = i915_bo_framebuffer_lookup,
>> };
>> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
>> index b16ed1ce2a85..dab979287a96 100644
>> --- a/drivers/gpu/drm/xe/Makefile
>> +++ b/drivers/gpu/drm/xe/Makefile
>> @@ -211,7 +211,6 @@ $(obj)/i915-display/%.o:
>> $(srctree)/drivers/gpu/drm/i915/display/%.c FORCE
>>
>> # Display code specific to xe
>> xe-$(CONFIG_DRM_XE_DISPLAY) += \
>> - display/intel_fb_bo.o \
>> display/intel_fbdev_fb.o \
>> display/xe_display.o \
>> display/xe_display_bo.o \
>> diff --git a/drivers/gpu/drm/xe/display/intel_fb_bo.c
>> b/drivers/gpu/drm/xe/display/intel_fb_bo.c
>> deleted file mode 100644
>> index db8b1a27b4de..000000000000
>> --- a/drivers/gpu/drm/xe/display/intel_fb_bo.c
>> +++ /dev/null
>> @@ -1,91 +0,0 @@
>> -/* SPDX-License-Identifier: MIT */
>> -/*
>> - * Copyright © 2021 Intel Corporation
>> - */
>> -
>> -#include <drm/drm_modeset_helper.h>
>> -#include <drm/ttm/ttm_bo.h>
>> -
>> -#include "intel_display_types.h"
>> -#include "intel_fb.h"
>> -#include "intel_fb_bo.h"
>> -#include "xe_bo.h"
>> -
>> -void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj) -{
>> - struct xe_bo *bo = gem_to_xe_bo(obj);
>> -
>> - if (bo->flags & XE_BO_FLAG_PINNED) {
>> - /* Unpin our kernel fb first */
>> - xe_bo_lock(bo, false);
>> - xe_bo_unpin(bo);
>> - xe_bo_unlock(bo);
>> - }
>> - xe_bo_put(bo);
>> -}
>> -
>> -int intel_fb_bo_framebuffer_init(struct drm_gem_object *obj,
>> - struct drm_mode_fb_cmd2 *mode_cmd)
>> -{
>> - struct xe_bo *bo = gem_to_xe_bo(obj);
>> - struct xe_device *xe = to_xe_device(bo->ttm.base.dev);
>> - int ret;
>> -
>> - /*
>> - * Some modifiers require physical alignment of 64KiB VRAM pages;
>> - * require that the BO in those cases is created correctly.
>> - */
>> - if (XE_IOCTL_DBG(xe, intel_fb_needs_64k_phys(mode_cmd-
>> >modifier[0]) &&
>> - !(bo->flags & XE_BO_FLAG_NEEDS_64K)))
>> - return -EINVAL;
>> -
>> - xe_bo_get(bo);
>> -
>> - ret = ttm_bo_reserve(&bo->ttm, true, false, NULL);
>> - if (ret)
>> - goto err;
>> -
>> - if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
>> - /*
>> - * XE_BO_FLAG_SCANOUT should ideally be set at creation,
>> or is
>> - * automatically set when creating FB. We cannot change
>> caching
>> - * mode when the bo is VM_BINDed, so we can only set
>> - * coherency with display when unbound.
>> - */
>> - if (XE_IOCTL_DBG(xe, xe_bo_is_vm_bound(bo))) {
>> - ttm_bo_unreserve(&bo->ttm);
>> - ret = -EINVAL;
>> - goto err;
>> - }
>> - bo->flags |= XE_BO_FLAG_SCANOUT;
>> - }
>> - ttm_bo_unreserve(&bo->ttm);
>> - return 0;
>> -
>> -err:
>> - xe_bo_put(bo);
>> - return ret;
>> -}
>> -
>> -struct drm_gem_object *intel_fb_bo_lookup_valid_bo(struct drm_device
>> *drm,
>> - struct drm_file *filp,
>> - const struct
>> drm_mode_fb_cmd2 *mode_cmd)
>> -{
>> - struct xe_device *xe = to_xe_device(drm);
>> - struct xe_bo *bo;
>> - struct drm_gem_object *gem = drm_gem_object_lookup(filp,
>> mode_cmd->handles[0]);
>> -
>> - if (!gem)
>> - return ERR_PTR(-ENOENT);
>> -
>> - bo = gem_to_xe_bo(gem);
>> - /* Require vram placement or dma-buf import */
>> - if (IS_DGFX(xe) &&
>> - !xe_bo_can_migrate(bo, XE_PL_VRAM0) &&
>> - bo->ttm.type != ttm_bo_type_sg) {
>> - drm_gem_object_put(gem);
>> - return ERR_PTR(-EREMOTE);
>> - }
>> -
>> - return gem;
>> -}
>> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c
>> b/drivers/gpu/drm/xe/display/xe_display_bo.c
>> index a53ba3f247ec..a689f71e7b14 100644
>> --- a/drivers/gpu/drm/xe/display/xe_display_bo.c
>> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c
>> @@ -4,6 +4,7 @@
>> #include <drm/drm_gem.h>
>> #include <drm/intel/display_parent_interface.h>
>>
>> +#include "intel_fb.h"
>> #include "xe_bo.h"
>> #include "xe_display_bo.h"
>> #include "xe_pxp.h"
>> @@ -20,9 +21,92 @@ static int xe_display_bo_read_from_page(struct
>> drm_gem_object *obj, u64 offset,
>> return xe_bo_read(bo, offset, dst, size); }
>>
>> +static int xe_display_bo_framebuffer_init(struct drm_gem_object *obj,
>> + struct drm_mode_fb_cmd2
>> *mode_cmd) {
>> + struct xe_bo *bo = gem_to_xe_bo(obj);
>> + struct xe_device *xe = to_xe_device(bo->ttm.base.dev);
>> + int ret;
>> +
>> + /*
>> + * Some modifiers require physical alignment of 64KiB VRAM pages;
>> + * require that the BO in those cases is created correctly.
>> + */
>> + if (XE_IOCTL_DBG(xe, intel_fb_needs_64k_phys(mode_cmd-
>> >modifier[0]) &&
>> + !(bo->flags & XE_BO_FLAG_NEEDS_64K)))
>> + return -EINVAL;
>> +
>> + xe_bo_get(bo);
>> +
>> + ret = ttm_bo_reserve(&bo->ttm, true, false, NULL);
>> + if (ret)
>> + goto err;
>> +
>> + if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
>> + /*
>> + * XE_BO_FLAG_SCANOUT should ideally be set at creation,
>> or is
>> + * automatically set when creating FB. We cannot change
>> caching
>> + * mode when the bo is VM_BINDed, so we can only set
>> + * coherency with display when unbound.
>> + */
>> + if (XE_IOCTL_DBG(xe, xe_bo_is_vm_bound(bo))) {
>> + ttm_bo_unreserve(&bo->ttm);
>> + ret = -EINVAL;
>> + goto err;
>> + }
>> + bo->flags |= XE_BO_FLAG_SCANOUT;
>> + }
>> + ttm_bo_unreserve(&bo->ttm);
>> + return 0;
>> +
>> +err:
>> + xe_bo_put(bo);
>> + return ret;
>> +}
>> +
>> +static void xe_display_bo_framebuffer_fini(struct drm_gem_object *obj)
>> +{
>> + struct xe_bo *bo = gem_to_xe_bo(obj);
>> +
>> + if (bo->flags & XE_BO_FLAG_PINNED) {
>> + /* Unpin our kernel fb first */
>> + xe_bo_lock(bo, false);
>> + xe_bo_unpin(bo);
>> + xe_bo_unlock(bo);
>> + }
>> + xe_bo_put(bo);
>> +}
>> +
>> +static struct drm_gem_object *
>> +xe_display_bo_framebuffer_lookup(struct drm_device *drm,
>> + struct drm_file *filp,
>> + const struct drm_mode_fb_cmd2
>> *mode_cmd) {
>> + struct xe_device *xe = to_xe_device(drm);
>> + struct xe_bo *bo;
>> + struct drm_gem_object *gem = drm_gem_object_lookup(filp,
>> +mode_cmd->handles[0]);
>> +
>> + if (!gem)
>> + return ERR_PTR(-ENOENT);
>> +
>> + bo = gem_to_xe_bo(gem);
>> + /* Require vram placement or dma-buf import */
>> + if (IS_DGFX(xe) &&
>> + !xe_bo_can_migrate(bo, XE_PL_VRAM0) &&
>> + bo->ttm.type != ttm_bo_type_sg) {
>> + drm_gem_object_put(gem);
>> + return ERR_PTR(-EREMOTE);
>> + }
>> +
>> + return gem;
>> +}
>> +
>> const struct intel_display_bo_interface xe_display_bo_interface = {
>> .is_protected = xe_display_bo_is_protected,
>> .key_check = xe_pxp_obj_key_check,
>> .fb_mmap = drm_gem_prime_mmap,
>> .read_from_page = xe_display_bo_read_from_page,
>> + .framebuffer_init = xe_display_bo_framebuffer_init,
>> + .framebuffer_fini = xe_display_bo_framebuffer_fini,
>> + .framebuffer_lookup = xe_display_bo_framebuffer_lookup,
>> };
>> diff --git a/include/drm/intel/display_parent_interface.h
>> b/include/drm/intel/display_parent_interface.h
>> index 2b53d12b0e0a..97ec94a2e749 100644
>> --- a/include/drm/intel/display_parent_interface.h
>> +++ b/include/drm/intel/display_parent_interface.h
>> @@ -12,6 +12,7 @@ struct drm_device;
>> struct drm_file;
>> struct drm_framebuffer;
>> struct drm_gem_object;
>> +struct drm_mode_fb_cmd2;
>> struct drm_plane_state;
>> struct drm_scanout_buffer;
>> struct i915_vma;
>> @@ -37,6 +38,11 @@ struct intel_display_bo_interface {
>> int (*fb_mmap)(struct drm_gem_object *obj, struct vm_area_struct
>> *vma);
>> int (*read_from_page)(struct drm_gem_object *obj, u64 offset, void
>> *dst, int size);
>> void (*describe)(struct seq_file *m, struct drm_gem_object *obj); /*
>> Optional */
>> + int (*framebuffer_init)(struct drm_gem_object *obj, struct
>> drm_mode_fb_cmd2 *mode_cmd);
>> + void (*framebuffer_fini)(struct drm_gem_object *obj);
>> + struct drm_gem_object *(*framebuffer_lookup)(struct drm_device
>> *drm,
>> + struct drm_file *filp,
>> + const struct
>> drm_mode_fb_cmd2 *user_mode_cmd);
>> };
>>
>> struct intel_display_dpt_interface {
>> --
>> 2.47.3
>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent interface
2026-03-12 9:00 ` [PATCH 5/5] drm/{i915, xe}: " Jani Nikula
@ 2026-03-13 5:12 ` Kandpal, Suraj
0 siblings, 0 replies; 17+ messages in thread
From: Kandpal, Suraj @ 2026-03-13 5:12 UTC (permalink / raw)
To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
> Subject: RE: [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent
> interface
>
> On Thu, 12 Mar 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
> >> Subject: [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent
> >> interface
> >>
> >> Add .framebuffer_init, .framebuffer_fini and .framebuffer_lookup to
> >> the bo parent interface. While they're about framebuffers, they're
> >> specifically about framebuffer objects, so the bo interface is a good
> >> enough fit, and there's no need to add another interface struct.
> >
> > Maybe it can also be mentioned that since we move all the functions
> > from Intel_fb_bo to i915_bo.c we can safely remove it.
>
> Sure.
>
> >>
> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> >> ---
> >> drivers/gpu/drm/i915/Makefile | 1 -
> >> drivers/gpu/drm/i915/display/intel_bo.c | 21 +++++
> >> drivers/gpu/drm/i915/display/intel_bo.h | 9 ++
> >> drivers/gpu/drm/i915/display/intel_fb.c | 12 +--
> >> drivers/gpu/drm/i915/display/intel_fb_bo.c | 99 --------------------
> >> drivers/gpu/drm/i915/display/intel_fb_bo.h | 25 -----
> >> drivers/gpu/drm/i915/i915_bo.c | 92 ++++++++++++++++++
> >> drivers/gpu/drm/xe/Makefile | 1 -
> >> drivers/gpu/drm/xe/display/intel_fb_bo.c | 91 ------------------
> >> drivers/gpu/drm/xe/display/xe_display_bo.c | 84 +++++++++++++++++
> >> include/drm/intel/display_parent_interface.h | 6 ++
> >> 11 files changed, 218 insertions(+), 223 deletions(-) delete mode
> >> 100644 drivers/gpu/drm/i915/display/intel_fb_bo.c
> >> delete mode 100644 drivers/gpu/drm/i915/display/intel_fb_bo.h
> >> delete mode 100644 drivers/gpu/drm/xe/display/intel_fb_bo.c
> >>
> >> diff --git a/drivers/gpu/drm/i915/Makefile
> >> b/drivers/gpu/drm/i915/Makefile index 425933fb26a5..be976a90c5a6
> >> 100644
> >> --- a/drivers/gpu/drm/i915/Makefile
> >> +++ b/drivers/gpu/drm/i915/Makefile
> >> @@ -278,7 +278,6 @@ i915-y += \
> >> display/intel_drrs.o \
> >> display/intel_dsb.o \
> >> display/intel_fb.o \
> >> - display/intel_fb_bo.o \
> >> display/intel_fb_pin.o \
> >> display/intel_fbc.o \
> >> display/intel_fdi.o \
> >> diff --git a/drivers/gpu/drm/i915/display/intel_bo.c
> >> b/drivers/gpu/drm/i915/display/intel_bo.c
> >> index e356ab4e0640..3b82d38a0504 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_bo.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_bo.c
> >> @@ -64,3 +64,24 @@ void intel_bo_describe(struct seq_file *m, struct
> >> drm_gem_object *obj)
> >> if (display->parent->bo->describe)
> >> display->parent->bo->describe(m, obj); }
> >> +
> >> +int intel_bo_framebuffer_init(struct drm_gem_object *obj, struct
> >> +drm_mode_fb_cmd2 *mode_cmd) {
> >> + struct intel_display *display = to_intel_display(obj->dev);
> >> +
> >> + return display->parent->bo->framebuffer_init(obj, mode_cmd); }
> >> +
> >> +void intel_bo_framebuffer_fini(struct drm_gem_object *obj) {
> >> + struct intel_display *display = to_intel_display(obj->dev);
> >> +
> >> + display->parent->bo->framebuffer_fini(obj);
> >
> > Should we be making this optional . This will help avoid creating
> > dummy functions for fini like you have done previously.
>
> I have this gnawing feeling that it should not be a dummy function in the first
> place. I haven't actually looked into the bottom of it. That's why I ended up
> keeping the dummy.
I think its better to play it safe.
Do you think a TODO can be added ?
Otherwise LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> BR,
> Jani.
>
>
> >
> > Regards,
> > Suraj Kandpal
> >
> >> +}
> >> +
> >> +struct drm_gem_object *intel_bo_framebuffer_lookup(struct
> >> +intel_display
> >> *display,
> >> + struct drm_file *filp,
> >> + const struct
> >> drm_mode_fb_cmd2 *user_mode_cmd) {
> >> + return display->parent->bo->framebuffer_lookup(display->drm, filp,
> >> +user_mode_cmd); }
> >> diff --git a/drivers/gpu/drm/i915/display/intel_bo.h
> >> b/drivers/gpu/drm/i915/display/intel_bo.h
> >> index 40390ed92ceb..aec188c706c2 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_bo.h
> >> +++ b/drivers/gpu/drm/i915/display/intel_bo.h
> >> @@ -6,8 +6,11 @@
> >>
> >> #include <linux/types.h>
> >>
> >> +struct drm_file;
> >> struct drm_gem_object;
> >> +struct drm_mode_fb_cmd2;
> >> struct drm_scanout_buffer;
> >> +struct intel_display;
> >> struct intel_framebuffer;
> >> struct seq_file;
> >> struct vm_area_struct;
> >> @@ -22,4 +25,10 @@ int intel_bo_read_from_page(struct drm_gem_object
> >> *obj, u64 offset, void *dst, i
> >>
> >> void intel_bo_describe(struct seq_file *m, struct drm_gem_object
> >> *obj);
> >>
> >> +void intel_bo_framebuffer_fini(struct drm_gem_object *obj); int
> >> +intel_bo_framebuffer_init(struct drm_gem_object *obj, struct
> >> +drm_mode_fb_cmd2 *mode_cmd); struct drm_gem_object
> >> *intel_bo_framebuffer_lookup(struct intel_display *display,
> >> + struct drm_file *filp,
> >> + const struct
> >> drm_mode_fb_cmd2 *user_mode_cmd);
> >> +
> >> #endif /* __INTEL_BO__ */
> >> diff --git a/drivers/gpu/drm/i915/display/intel_fb.c
> >> b/drivers/gpu/drm/i915/display/intel_fb.c
> >> index 49c6ca9d94c6..5768619f840f 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_fb.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_fb.c
> >> @@ -17,7 +17,6 @@
> >> #include "intel_display_types.h"
> >> #include "intel_display_utils.h"
> >> #include "intel_fb.h"
> >> -#include "intel_fb_bo.h"
> >> #include "intel_frontbuffer.h"
> >> #include "intel_parent.h"
> >> #include "intel_plane.h"
> >> @@ -2111,7 +2110,7 @@ static void
> >> intel_user_framebuffer_destroy(struct
> >> drm_framebuffer *fb)
> >> if (intel_fb_uses_dpt(fb))
> >> intel_parent_dpt_destroy(display, intel_fb->dpt);
> >>
> >> - intel_fb_bo_framebuffer_fini(intel_fb_bo(fb));
> >> + intel_bo_framebuffer_fini(intel_fb_bo(fb));
> >>
> >> intel_parent_frontbuffer_put(display, intel_fb->frontbuffer);
> >>
> >> @@ -2222,7 +2221,7 @@ int intel_framebuffer_init(struct
> >> intel_framebuffer *intel_fb,
> >>
> >> /*
> >> * intel_parent_frontbuffer_get() must be done before
> >> - * intel_fb_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
> >> + * intel_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
> >> */
> >> intel_fb->frontbuffer = intel_parent_frontbuffer_get(display, obj);
> >> if (!intel_fb->frontbuffer) {
> >> @@ -2230,7 +2229,7 @@ int intel_framebuffer_init(struct
> >> intel_framebuffer *intel_fb,
> >> goto err_free_panic;
> >> }
> >>
> >> - ret = intel_fb_bo_framebuffer_init(obj, mode_cmd);
> >> + ret = intel_bo_framebuffer_init(obj, mode_cmd);
> >> if (ret)
> >> goto err_frontbuffer_put;
> >>
> >> @@ -2333,7 +2332,7 @@ int intel_framebuffer_init(struct
> >> intel_framebuffer *intel_fb,
> >> if (intel_fb_uses_dpt(fb))
> >> intel_parent_dpt_destroy(display, intel_fb->dpt);
> >> err_bo_framebuffer_fini:
> >> - intel_fb_bo_framebuffer_fini(obj);
> >> + intel_bo_framebuffer_fini(obj);
> >> err_frontbuffer_put:
> >> intel_parent_frontbuffer_put(display, intel_fb->frontbuffer);
> >> err_free_panic:
> >> @@ -2348,11 +2347,12 @@ intel_user_framebuffer_create(struct
> >> drm_device *dev,
> >> const struct drm_format_info *info,
> >> const struct drm_mode_fb_cmd2
> >> *user_mode_cmd) {
> >> + struct intel_display *display = to_intel_display(dev);
> >> struct drm_framebuffer *fb;
> >> struct drm_gem_object *obj;
> >> struct drm_mode_fb_cmd2 mode_cmd = *user_mode_cmd;
> >>
> >> - obj = intel_fb_bo_lookup_valid_bo(dev, filp, &mode_cmd);
> >> + obj = intel_bo_framebuffer_lookup(display, filp, &mode_cmd);
> >> if (IS_ERR(obj))
> >> return ERR_CAST(obj);
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.c
> >> b/drivers/gpu/drm/i915/display/intel_fb_bo.c
> >> deleted file mode 100644
> >> index a4d49ef450d9..000000000000
> >> --- a/drivers/gpu/drm/i915/display/intel_fb_bo.c
> >> +++ /dev/null
> >> @@ -1,99 +0,0 @@
> >> -/* SPDX-License-Identifier: MIT */
> >> -/*
> >> - * Copyright © 2021 Intel Corporation
> >> - */
> >> -
> >> -#include <drm/drm_framebuffer.h>
> >> -#include <drm/drm_print.h>
> >> -
> >> -#include "gem/i915_gem_object.h"
> >> -
> >> -#include "i915_drv.h"
> >> -#include "intel_fb.h"
> >> -#include "intel_fb_bo.h"
> >> -
> >> -void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj) -{
> >> - /* Nothing to do for i915 */
> >> -}
> >> -
> >> -int intel_fb_bo_framebuffer_init(struct drm_gem_object *_obj,
> >> - struct drm_mode_fb_cmd2 *mode_cmd)
> >> -{
> >> - struct drm_i915_gem_object *obj = to_intel_bo(_obj);
> >> - struct drm_i915_private *i915 = to_i915(obj->base.dev);
> >> - unsigned int tiling, stride;
> >> -
> >> - i915_gem_object_lock(obj, NULL);
> >> - tiling = i915_gem_object_get_tiling(obj);
> >> - stride = i915_gem_object_get_stride(obj);
> >> - i915_gem_object_unlock(obj);
> >> -
> >> - if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) {
> >> - /*
> >> - * If there's a fence, enforce that
> >> - * the fb modifier and tiling mode match.
> >> - */
> >> - if (tiling != I915_TILING_NONE &&
> >> - tiling != intel_fb_modifier_to_tiling(mode_cmd-
> >> >modifier[0])) {
> >> - drm_dbg_kms(&i915->drm,
> >> - "tiling_mode doesn't match fb modifier\n");
> >> - return -EINVAL;
> >> - }
> >> - } else {
> >> - if (tiling == I915_TILING_X) {
> >> - mode_cmd->modifier[0] =
> >> I915_FORMAT_MOD_X_TILED;
> >> - } else if (tiling == I915_TILING_Y) {
> >> - drm_dbg_kms(&i915->drm,
> >> - "No Y tiling for legacy addfb\n");
> >> - return -EINVAL;
> >> - }
> >> - }
> >> -
> >> - /*
> >> - * gen2/3 display engine uses the fence if present,
> >> - * so the tiling mode must match the fb modifier exactly.
> >> - */
> >> - if (GRAPHICS_VER(i915) < 4 &&
> >> - tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
> >> - drm_dbg_kms(&i915->drm,
> >> - "tiling_mode must match fb modifier exactly on
> >> gen2/3\n");
> >> - return -EINVAL;
> >> - }
> >> -
> >> - /*
> >> - * If there's a fence, enforce that
> >> - * the fb pitch and fence stride match.
> >> - */
> >> - if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
> >> - drm_dbg_kms(&i915->drm,
> >> - "pitch (%d) must match tiling stride (%d)\n",
> >> - mode_cmd->pitches[0], stride);
> >> - return -EINVAL;
> >> - }
> >> -
> >> - return 0;
> >> -}
> >> -
> >> -struct drm_gem_object *
> >> -intel_fb_bo_lookup_valid_bo(struct drm_device *drm,
> >> - struct drm_file *filp,
> >> - const struct drm_mode_fb_cmd2 *mode_cmd)
> >> -{
> >> - struct drm_i915_private *i915 = to_i915(drm);
> >> - struct drm_i915_gem_object *obj;
> >> -
> >> - obj = i915_gem_object_lookup(filp, mode_cmd->handles[0]);
> >> - if (!obj)
> >> - return ERR_PTR(-ENOENT);
> >> -
> >> - /* object is backed with LMEM for discrete */
> >> - if (HAS_LMEM(i915) && !i915_gem_object_can_migrate(obj,
> >> INTEL_REGION_LMEM_0)) {
> >> - /* object is "remote", not in local memory */
> >> - i915_gem_object_put(obj);
> >> - drm_dbg_kms(&i915->drm, "framebuffer must reside in local
> >> memory\n");
> >> - return ERR_PTR(-EREMOTE);
> >> - }
> >> -
> >> - return intel_bo_to_drm_bo(obj);
> >> -}
> >> diff --git a/drivers/gpu/drm/i915/display/intel_fb_bo.h
> >> b/drivers/gpu/drm/i915/display/intel_fb_bo.h
> >> deleted file mode 100644
> >> index d775773c6c03..000000000000
> >> --- a/drivers/gpu/drm/i915/display/intel_fb_bo.h
> >> +++ /dev/null
> >> @@ -1,25 +0,0 @@
> >> -/* SPDX-License-Identifier: MIT */
> >> -/*
> >> - * Copyright © 2021 Intel Corporation
> >> - */
> >> -
> >> -#ifndef __INTEL_FB_BO_H__
> >> -#define __INTEL_FB_BO_H__
> >> -
> >> -struct drm_device;
> >> -struct drm_file;
> >> -struct drm_framebuffer;
> >> -struct drm_gem_object;
> >> -struct drm_mode_fb_cmd2;
> >> -
> >> -void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj);
> >> -
> >> -int intel_fb_bo_framebuffer_init(struct drm_gem_object *obj,
> >> - struct drm_mode_fb_cmd2 *mode_cmd);
> >> -
> >> -struct drm_gem_object *
> >> -intel_fb_bo_lookup_valid_bo(struct drm_device *drm,
> >> - struct drm_file *filp,
> >> - const struct drm_mode_fb_cmd2
> >> *user_mode_cmd);
> >> -
> >> -#endif
> >> diff --git a/drivers/gpu/drm/i915/i915_bo.c
> >> b/drivers/gpu/drm/i915/i915_bo.c index 04fc0e3b7ef6..1789f7cab05c
> >> 100644
> >> --- a/drivers/gpu/drm/i915/i915_bo.c
> >> +++ b/drivers/gpu/drm/i915/i915_bo.c
> >> @@ -2,8 +2,10 @@
> >> /* Copyright © 2024 Intel Corporation */
> >>
> >> #include <drm/drm_panic.h>
> >> +#include <drm/drm_print.h>
> >> #include <drm/intel/display_parent_interface.h>
> >>
> >> +#include "display/intel_fb.h"
> >> #include "gem/i915_gem_mman.h"
> >> #include "gem/i915_gem_object.h"
> >> #include "gem/i915_gem_object_frontbuffer.h"
> >> @@ -11,6 +13,7 @@
> >>
> >> #include "i915_bo.h"
> >> #include "i915_debugfs.h"
> >> +#include "i915_drv.h"
> >>
> >> static bool i915_bo_is_tiled(struct drm_gem_object *obj) { @@ -52,6
> >> +55,92 @@ static void i915_bo_describe(struct seq_file *m, struct
> >> drm_gem_object
> >> *obj)
> >> i915_debugfs_describe_obj(m, to_intel_bo(obj)); }
> >>
> >> +static int i915_bo_framebuffer_init(struct drm_gem_object *_obj,
> >> + struct drm_mode_fb_cmd2 *mode_cmd) {
> >> + struct drm_i915_gem_object *obj = to_intel_bo(_obj);
> >> + struct drm_i915_private *i915 = to_i915(obj->base.dev);
> >> + unsigned int tiling, stride;
> >> +
> >> + i915_gem_object_lock(obj, NULL);
> >> + tiling = i915_gem_object_get_tiling(obj);
> >> + stride = i915_gem_object_get_stride(obj);
> >> + i915_gem_object_unlock(obj);
> >> +
> >> + if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) {
> >> + /*
> >> + * If there's a fence, enforce that
> >> + * the fb modifier and tiling mode match.
> >> + */
> >> + if (tiling != I915_TILING_NONE &&
> >> + tiling != intel_fb_modifier_to_tiling(mode_cmd-
> >> >modifier[0])) {
> >> + drm_dbg_kms(&i915->drm,
> >> + "tiling_mode doesn't match fb modifier\n");
> >> + return -EINVAL;
> >> + }
> >> + } else {
> >> + if (tiling == I915_TILING_X) {
> >> + mode_cmd->modifier[0] =
> >> I915_FORMAT_MOD_X_TILED;
> >> + } else if (tiling == I915_TILING_Y) {
> >> + drm_dbg_kms(&i915->drm,
> >> + "No Y tiling for legacy addfb\n");
> >> + return -EINVAL;
> >> + }
> >> + }
> >> +
> >> + /*
> >> + * gen2/3 display engine uses the fence if present,
> >> + * so the tiling mode must match the fb modifier exactly.
> >> + */
> >> + if (GRAPHICS_VER(i915) < 4 &&
> >> + tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) {
> >> + drm_dbg_kms(&i915->drm,
> >> + "tiling_mode must match fb modifier exactly on
> >> gen2/3\n");
> >> + return -EINVAL;
> >> + }
> >> +
> >> + /*
> >> + * If there's a fence, enforce that
> >> + * the fb pitch and fence stride match.
> >> + */
> >> + if (tiling != I915_TILING_NONE && mode_cmd->pitches[0] != stride) {
> >> + drm_dbg_kms(&i915->drm,
> >> + "pitch (%d) must match tiling stride (%d)\n",
> >> + mode_cmd->pitches[0], stride);
> >> + return -EINVAL;
> >> + }
> >> +
> >> + return 0;
> >> +}
> >> +
> >> +static void i915_bo_framebuffer_fini(struct drm_gem_object *obj) {
> >> + /* Nothing to do for i915 */
> >> +}
> >> +
> >> +static struct drm_gem_object *
> >> +i915_bo_framebuffer_lookup(struct drm_device *drm,
> >> + struct drm_file *filp,
> >> + const struct drm_mode_fb_cmd2 *mode_cmd) {
> >> + struct drm_i915_private *i915 = to_i915(drm);
> >> + struct drm_i915_gem_object *obj;
> >> +
> >> + obj = i915_gem_object_lookup(filp, mode_cmd->handles[0]);
> >> + if (!obj)
> >> + return ERR_PTR(-ENOENT);
> >> +
> >> + /* object is backed with LMEM for discrete */
> >> + if (HAS_LMEM(i915) && !i915_gem_object_can_migrate(obj,
> >> INTEL_REGION_LMEM_0)) {
> >> + /* object is "remote", not in local memory */
> >> + i915_gem_object_put(obj);
> >> + drm_dbg_kms(&i915->drm, "framebuffer must reside in local
> >> memory\n");
> >> + return ERR_PTR(-EREMOTE);
> >> + }
> >> +
> >> + return intel_bo_to_drm_bo(obj);
> >> +}
> >> +
> >> const struct intel_display_bo_interface i915_display_bo_interface = {
> >> .is_tiled = i915_bo_is_tiled,
> >> .is_userptr = i915_bo_is_userptr,
> >> @@ -61,4 +150,7 @@ const struct intel_display_bo_interface
> >> i915_display_bo_interface = {
> >> .fb_mmap = i915_bo_fb_mmap,
> >> .read_from_page = i915_bo_read_from_page,
> >> .describe = i915_bo_describe,
> >> + .framebuffer_init = i915_bo_framebuffer_init,
> >> + .framebuffer_fini = i915_bo_framebuffer_fini,
> >> + .framebuffer_lookup = i915_bo_framebuffer_lookup,
> >> };
> >> diff --git a/drivers/gpu/drm/xe/Makefile
> >> b/drivers/gpu/drm/xe/Makefile index b16ed1ce2a85..dab979287a96 100644
> >> --- a/drivers/gpu/drm/xe/Makefile
> >> +++ b/drivers/gpu/drm/xe/Makefile
> >> @@ -211,7 +211,6 @@ $(obj)/i915-display/%.o:
> >> $(srctree)/drivers/gpu/drm/i915/display/%.c FORCE
> >>
> >> # Display code specific to xe
> >> xe-$(CONFIG_DRM_XE_DISPLAY) += \
> >> - display/intel_fb_bo.o \
> >> display/intel_fbdev_fb.o \
> >> display/xe_display.o \
> >> display/xe_display_bo.o \
> >> diff --git a/drivers/gpu/drm/xe/display/intel_fb_bo.c
> >> b/drivers/gpu/drm/xe/display/intel_fb_bo.c
> >> deleted file mode 100644
> >> index db8b1a27b4de..000000000000
> >> --- a/drivers/gpu/drm/xe/display/intel_fb_bo.c
> >> +++ /dev/null
> >> @@ -1,91 +0,0 @@
> >> -/* SPDX-License-Identifier: MIT */
> >> -/*
> >> - * Copyright © 2021 Intel Corporation
> >> - */
> >> -
> >> -#include <drm/drm_modeset_helper.h>
> >> -#include <drm/ttm/ttm_bo.h>
> >> -
> >> -#include "intel_display_types.h"
> >> -#include "intel_fb.h"
> >> -#include "intel_fb_bo.h"
> >> -#include "xe_bo.h"
> >> -
> >> -void intel_fb_bo_framebuffer_fini(struct drm_gem_object *obj) -{
> >> - struct xe_bo *bo = gem_to_xe_bo(obj);
> >> -
> >> - if (bo->flags & XE_BO_FLAG_PINNED) {
> >> - /* Unpin our kernel fb first */
> >> - xe_bo_lock(bo, false);
> >> - xe_bo_unpin(bo);
> >> - xe_bo_unlock(bo);
> >> - }
> >> - xe_bo_put(bo);
> >> -}
> >> -
> >> -int intel_fb_bo_framebuffer_init(struct drm_gem_object *obj,
> >> - struct drm_mode_fb_cmd2 *mode_cmd)
> >> -{
> >> - struct xe_bo *bo = gem_to_xe_bo(obj);
> >> - struct xe_device *xe = to_xe_device(bo->ttm.base.dev);
> >> - int ret;
> >> -
> >> - /*
> >> - * Some modifiers require physical alignment of 64KiB VRAM pages;
> >> - * require that the BO in those cases is created correctly.
> >> - */
> >> - if (XE_IOCTL_DBG(xe, intel_fb_needs_64k_phys(mode_cmd-
> >> >modifier[0]) &&
> >> - !(bo->flags & XE_BO_FLAG_NEEDS_64K)))
> >> - return -EINVAL;
> >> -
> >> - xe_bo_get(bo);
> >> -
> >> - ret = ttm_bo_reserve(&bo->ttm, true, false, NULL);
> >> - if (ret)
> >> - goto err;
> >> -
> >> - if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
> >> - /*
> >> - * XE_BO_FLAG_SCANOUT should ideally be set at creation,
> >> or is
> >> - * automatically set when creating FB. We cannot change
> >> caching
> >> - * mode when the bo is VM_BINDed, so we can only set
> >> - * coherency with display when unbound.
> >> - */
> >> - if (XE_IOCTL_DBG(xe, xe_bo_is_vm_bound(bo))) {
> >> - ttm_bo_unreserve(&bo->ttm);
> >> - ret = -EINVAL;
> >> - goto err;
> >> - }
> >> - bo->flags |= XE_BO_FLAG_SCANOUT;
> >> - }
> >> - ttm_bo_unreserve(&bo->ttm);
> >> - return 0;
> >> -
> >> -err:
> >> - xe_bo_put(bo);
> >> - return ret;
> >> -}
> >> -
> >> -struct drm_gem_object *intel_fb_bo_lookup_valid_bo(struct drm_device
> >> *drm,
> >> - struct drm_file *filp,
> >> - const struct
> >> drm_mode_fb_cmd2 *mode_cmd)
> >> -{
> >> - struct xe_device *xe = to_xe_device(drm);
> >> - struct xe_bo *bo;
> >> - struct drm_gem_object *gem = drm_gem_object_lookup(filp,
> >> mode_cmd->handles[0]);
> >> -
> >> - if (!gem)
> >> - return ERR_PTR(-ENOENT);
> >> -
> >> - bo = gem_to_xe_bo(gem);
> >> - /* Require vram placement or dma-buf import */
> >> - if (IS_DGFX(xe) &&
> >> - !xe_bo_can_migrate(bo, XE_PL_VRAM0) &&
> >> - bo->ttm.type != ttm_bo_type_sg) {
> >> - drm_gem_object_put(gem);
> >> - return ERR_PTR(-EREMOTE);
> >> - }
> >> -
> >> - return gem;
> >> -}
> >> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c
> >> b/drivers/gpu/drm/xe/display/xe_display_bo.c
> >> index a53ba3f247ec..a689f71e7b14 100644
> >> --- a/drivers/gpu/drm/xe/display/xe_display_bo.c
> >> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c
> >> @@ -4,6 +4,7 @@
> >> #include <drm/drm_gem.h>
> >> #include <drm/intel/display_parent_interface.h>
> >>
> >> +#include "intel_fb.h"
> >> #include "xe_bo.h"
> >> #include "xe_display_bo.h"
> >> #include "xe_pxp.h"
> >> @@ -20,9 +21,92 @@ static int xe_display_bo_read_from_page(struct
> >> drm_gem_object *obj, u64 offset,
> >> return xe_bo_read(bo, offset, dst, size); }
> >>
> >> +static int xe_display_bo_framebuffer_init(struct drm_gem_object *obj,
> >> + struct drm_mode_fb_cmd2
> >> *mode_cmd) {
> >> + struct xe_bo *bo = gem_to_xe_bo(obj);
> >> + struct xe_device *xe = to_xe_device(bo->ttm.base.dev);
> >> + int ret;
> >> +
> >> + /*
> >> + * Some modifiers require physical alignment of 64KiB VRAM pages;
> >> + * require that the BO in those cases is created correctly.
> >> + */
> >> + if (XE_IOCTL_DBG(xe, intel_fb_needs_64k_phys(mode_cmd-
> >> >modifier[0]) &&
> >> + !(bo->flags & XE_BO_FLAG_NEEDS_64K)))
> >> + return -EINVAL;
> >> +
> >> + xe_bo_get(bo);
> >> +
> >> + ret = ttm_bo_reserve(&bo->ttm, true, false, NULL);
> >> + if (ret)
> >> + goto err;
> >> +
> >> + if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
> >> + /*
> >> + * XE_BO_FLAG_SCANOUT should ideally be set at creation,
> >> or is
> >> + * automatically set when creating FB. We cannot change
> >> caching
> >> + * mode when the bo is VM_BINDed, so we can only set
> >> + * coherency with display when unbound.
> >> + */
> >> + if (XE_IOCTL_DBG(xe, xe_bo_is_vm_bound(bo))) {
> >> + ttm_bo_unreserve(&bo->ttm);
> >> + ret = -EINVAL;
> >> + goto err;
> >> + }
> >> + bo->flags |= XE_BO_FLAG_SCANOUT;
> >> + }
> >> + ttm_bo_unreserve(&bo->ttm);
> >> + return 0;
> >> +
> >> +err:
> >> + xe_bo_put(bo);
> >> + return ret;
> >> +}
> >> +
> >> +static void xe_display_bo_framebuffer_fini(struct drm_gem_object
> >> +*obj) {
> >> + struct xe_bo *bo = gem_to_xe_bo(obj);
> >> +
> >> + if (bo->flags & XE_BO_FLAG_PINNED) {
> >> + /* Unpin our kernel fb first */
> >> + xe_bo_lock(bo, false);
> >> + xe_bo_unpin(bo);
> >> + xe_bo_unlock(bo);
> >> + }
> >> + xe_bo_put(bo);
> >> +}
> >> +
> >> +static struct drm_gem_object *
> >> +xe_display_bo_framebuffer_lookup(struct drm_device *drm,
> >> + struct drm_file *filp,
> >> + const struct drm_mode_fb_cmd2
> >> *mode_cmd) {
> >> + struct xe_device *xe = to_xe_device(drm);
> >> + struct xe_bo *bo;
> >> + struct drm_gem_object *gem = drm_gem_object_lookup(filp,
> >> +mode_cmd->handles[0]);
> >> +
> >> + if (!gem)
> >> + return ERR_PTR(-ENOENT);
> >> +
> >> + bo = gem_to_xe_bo(gem);
> >> + /* Require vram placement or dma-buf import */
> >> + if (IS_DGFX(xe) &&
> >> + !xe_bo_can_migrate(bo, XE_PL_VRAM0) &&
> >> + bo->ttm.type != ttm_bo_type_sg) {
> >> + drm_gem_object_put(gem);
> >> + return ERR_PTR(-EREMOTE);
> >> + }
> >> +
> >> + return gem;
> >> +}
> >> +
> >> const struct intel_display_bo_interface xe_display_bo_interface = {
> >> .is_protected = xe_display_bo_is_protected,
> >> .key_check = xe_pxp_obj_key_check,
> >> .fb_mmap = drm_gem_prime_mmap,
> >> .read_from_page = xe_display_bo_read_from_page,
> >> + .framebuffer_init = xe_display_bo_framebuffer_init,
> >> + .framebuffer_fini = xe_display_bo_framebuffer_fini,
> >> + .framebuffer_lookup = xe_display_bo_framebuffer_lookup,
> >> };
> >> diff --git a/include/drm/intel/display_parent_interface.h
> >> b/include/drm/intel/display_parent_interface.h
> >> index 2b53d12b0e0a..97ec94a2e749 100644
> >> --- a/include/drm/intel/display_parent_interface.h
> >> +++ b/include/drm/intel/display_parent_interface.h
> >> @@ -12,6 +12,7 @@ struct drm_device;
> >> struct drm_file;
> >> struct drm_framebuffer;
> >> struct drm_gem_object;
> >> +struct drm_mode_fb_cmd2;
> >> struct drm_plane_state;
> >> struct drm_scanout_buffer;
> >> struct i915_vma;
> >> @@ -37,6 +38,11 @@ struct intel_display_bo_interface {
> >> int (*fb_mmap)(struct drm_gem_object *obj, struct vm_area_struct
> >> *vma);
> >> int (*read_from_page)(struct drm_gem_object *obj, u64 offset, void
> >> *dst, int size);
> >> void (*describe)(struct seq_file *m, struct drm_gem_object *obj);
> >> /* Optional */
> >> + int (*framebuffer_init)(struct drm_gem_object *obj, struct
> >> drm_mode_fb_cmd2 *mode_cmd);
> >> + void (*framebuffer_fini)(struct drm_gem_object *obj);
> >> + struct drm_gem_object *(*framebuffer_lookup)(struct drm_device
> >> *drm,
> >> + struct drm_file *filp,
> >> + const struct
> >> drm_mode_fb_cmd2 *user_mode_cmd);
> >> };
> >>
> >> struct intel_display_dpt_interface {
> >> --
> >> 2.47.3
> >
>
> --
> Jani Nikula, Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2026-03-13 5:12 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-11 14:18 [PATCH 0/5] drm/{i915,xe}: move bo stuff to parent interface Jani Nikula
2026-03-11 14:18 ` [PATCH 1/5] drm/i915: move i915 specific bo implementation to i915 Jani Nikula
2026-03-12 3:39 ` Kandpal, Suraj
2026-03-12 3:52 ` Kandpal, Suraj
2026-03-11 14:18 ` [PATCH 2/5] drm/xe: rename intel_bo.c to xe_display_bo.c Jani Nikula
2026-03-12 3:40 ` Kandpal, Suraj
2026-03-11 14:18 ` [PATCH 3/5] drm/{i915, xe}/bo: move display bo calls to parent interface Jani Nikula
2026-03-12 3:47 ` Kandpal, Suraj
2026-03-12 4:27 ` Kandpal, Suraj
2026-03-11 14:18 ` [PATCH 4/5] drm/i915/fb: make intel_fb_bo.c less dependent on display Jani Nikula
2026-03-12 3:51 ` Kandpal, Suraj
2026-03-11 14:18 ` [PATCH 5/5] drm/{i915,xe}: move framebuffer bo to parent interface Jani Nikula
2026-03-12 4:25 ` Kandpal, Suraj
2026-03-12 9:00 ` [PATCH 5/5] drm/{i915, xe}: " Jani Nikula
2026-03-13 5:12 ` [PATCH 5/5] drm/{i915,xe}: " Kandpal, Suraj
2026-03-11 15:33 ` ✓ i915.CI.BAT: success for drm/{i915,xe}: move bo stuff " Patchwork
2026-03-12 6:37 ` ✓ i915.CI.Full: " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox