* [PATCH 0/5] drm/{i915,xe}: move fbdev fb calls to parent interface
@ 2026-03-18 13:29 Jani Nikula
2026-03-18 13:29 ` [PATCH 1/5] drm/xe/fbdev: put intel_fbdev_fb_prefer_stolen() behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) Jani Nikula
` (6 more replies)
0 siblings, 7 replies; 16+ messages in thread
From: Jani Nikula @ 2026-03-18 13:29 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Jani Nikula (5):
drm/xe/fbdev: put intel_fbdev_fb_prefer_stolen() behind
IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION)
drm/{i915,xe}/fbdev: drop drm device parameter from
intel_fbdev_fb_fill_info()
drm/{i915,xe}: move fbdev fb calls to parent interface
drm/i915: pass struct drm_i915_private to
i915_bo_fbdev_prefer_stolen()
drm/xe: pass struct xe_device to xe_display_bo_fbdev_prefer_stolen()
drivers/gpu/drm/i915/Makefile | 3 +-
drivers/gpu/drm/i915/display/intel_bo.c | 27 ++++
drivers/gpu/drm/i915/display/intel_bo.h | 8 ++
drivers/gpu/drm/i915/display/intel_fbdev.c | 14 +--
drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 118 ------------------
drivers/gpu/drm/i915/display/intel_fbdev_fb.h | 24 ----
drivers/gpu/drm/i915/i915_bo.c | 114 +++++++++++++++++
drivers/gpu/drm/i915/i915_bo.h | 6 +
drivers/gpu/drm/i915/i915_initial_plane.c | 4 +-
drivers/gpu/drm/xe/Makefile | 1 -
drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 116 -----------------
drivers/gpu/drm/xe/display/xe_display_bo.c | 116 +++++++++++++++++
drivers/gpu/drm/xe/display/xe_display_bo.h | 6 +
drivers/gpu/drm/xe/display/xe_initial_plane.c | 5 +-
include/drm/intel/display_parent_interface.h | 7 ++
15 files changed, 297 insertions(+), 272 deletions(-)
delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.c
delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.h
delete mode 100644 drivers/gpu/drm/xe/display/intel_fbdev_fb.c
--
2.47.3
^ permalink raw reply [flat|nested] 16+ messages in thread* [PATCH 1/5] drm/xe/fbdev: put intel_fbdev_fb_prefer_stolen() behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) 2026-03-18 13:29 [PATCH 0/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula @ 2026-03-18 13:29 ` Jani Nikula 2026-03-24 23:33 ` Michał Grzelak 2026-03-18 13:29 ` [PATCH 2/5] drm/{i915, xe}/fbdev: drop drm device parameter from intel_fbdev_fb_fill_info() Jani Nikula ` (5 subsequent siblings) 6 siblings, 1 reply; 16+ messages in thread From: Jani Nikula @ 2026-03-18 13:29 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula Unify the behaviour with i915. Similar to commit b63c6b9b7f5e ("drm/i915/fbdev: fix link failure without FBDEV emulation"). The difference is that unlike i915, xe doesn't build display/intel_fbdev_fb.c conditional to CONFIG_DRM_FBDEV_EMULATION. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/xe/display/xe_initial_plane.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c index 65cc0b0c934b..730c6dc49522 100644 --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c @@ -86,6 +86,7 @@ initial_plane_bo(struct xe_device *xe, flags |= XE_BO_FLAG_STOLEN; if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && + IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && !intel_fbdev_fb_prefer_stolen(&xe->drm, plane_config->size)) { drm_info(&xe->drm, "Initial FB size exceeds half of stolen, discarding\n"); return NULL; -- 2.47.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 1/5] drm/xe/fbdev: put intel_fbdev_fb_prefer_stolen() behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) 2026-03-18 13:29 ` [PATCH 1/5] drm/xe/fbdev: put intel_fbdev_fb_prefer_stolen() behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) Jani Nikula @ 2026-03-24 23:33 ` Michał Grzelak 0 siblings, 0 replies; 16+ messages in thread From: Michał Grzelak @ 2026-03-24 23:33 UTC (permalink / raw) To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org [-- Attachment #1: Type: text/plain, Size: 415 bytes --] On Wed, 18 Mar 2026, Jani Nikula wrote: > Unify the behaviour with i915. Similar to commit b63c6b9b7f5e > ("drm/i915/fbdev: fix link failure without FBDEV emulation"). The > difference is that unlike i915, xe doesn't build > display/intel_fbdev_fb.c conditional to CONFIG_DRM_FBDEV_EMULATION. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Michał Grzelak <michal.grzelak@intel.com> BR, Michał ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/5] drm/{i915, xe}/fbdev: drop drm device parameter from intel_fbdev_fb_fill_info() 2026-03-18 13:29 [PATCH 0/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula 2026-03-18 13:29 ` [PATCH 1/5] drm/xe/fbdev: put intel_fbdev_fb_prefer_stolen() behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) Jani Nikula @ 2026-03-18 13:29 ` Jani Nikula 2026-03-24 23:34 ` Michał Grzelak 2026-03-18 13:29 ` [PATCH 3/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula ` (4 subsequent siblings) 6 siblings, 1 reply; 16+ messages in thread From: Jani Nikula @ 2026-03-18 13:29 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula The struct drm_device *drm parameter of intel_fbdev_fb_fill_info() is redundant, as you can obtain the same information via obj->dev. Drop the drm parameter, and move obj as first (or the context) parameter. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/display/intel_fbdev.c | 2 +- drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 8 ++++---- drivers/gpu/drm/i915/display/intel_fbdev_fb.h | 4 ++-- drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index bdaaf3edba0c..6401aaaba199 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -327,7 +327,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, obj = intel_fb_bo(&fb->base); - ret = intel_fbdev_fb_fill_info(display->drm, info, obj, vma); + ret = intel_fbdev_fb_fill_info(obj, info, vma); if (ret) goto out_unpin; diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c b/drivers/gpu/drm/i915/display/intel_fbdev_fb.c index 6f84eb6355de..a696ce42d10b 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev_fb.c @@ -66,10 +66,10 @@ void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) drm_gem_object_put(obj); } -int intel_fbdev_fb_fill_info(struct drm_device *drm, struct fb_info *info, - struct drm_gem_object *_obj, struct i915_vma *vma) +int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, + struct i915_vma *vma) { - struct drm_i915_private *i915 = to_i915(drm); + struct drm_i915_private *i915 = to_i915(_obj->dev); struct drm_i915_gem_object *obj = to_intel_bo(_obj); struct i915_gem_ww_ctx ww; void __iomem *vaddr; @@ -101,7 +101,7 @@ int intel_fbdev_fb_fill_info(struct drm_device *drm, struct fb_info *info, vaddr = i915_vma_pin_iomap(vma); if (IS_ERR(vaddr)) { - drm_err(drm, + drm_err(&i915->drm, "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); ret = PTR_ERR(vaddr); continue; diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h b/drivers/gpu/drm/i915/display/intel_fbdev_fb.h index 34ed2b9c2b4f..ddba45e9839d 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h +++ b/drivers/gpu/drm/i915/display/intel_fbdev_fb.h @@ -17,8 +17,8 @@ struct i915_vma; u32 intel_fbdev_fb_pitch_align(u32 stride); struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size); void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj); -int intel_fbdev_fb_fill_info(struct drm_device *drm, struct fb_info *info, - struct drm_gem_object *obj, struct i915_vma *vma); +int intel_fbdev_fb_fill_info(struct drm_gem_object *obj, struct fb_info *info, + struct i915_vma *vma); bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size); #endif diff --git a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c b/drivers/gpu/drm/xe/display/intel_fbdev_fb.c index 87af5646c938..2ad5e5a79287 100644 --- a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c +++ b/drivers/gpu/drm/xe/display/intel_fbdev_fb.c @@ -87,11 +87,11 @@ void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); } -int intel_fbdev_fb_fill_info(struct drm_device *drm, struct fb_info *info, - struct drm_gem_object *_obj, struct i915_vma *vma) +int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, + struct i915_vma *vma) { struct xe_bo *obj = gem_to_xe_bo(_obj); - struct pci_dev *pdev = to_pci_dev(drm->dev); + struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { if (obj->flags & XE_BO_FLAG_STOLEN) -- 2.47.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/5] drm/{i915, xe}/fbdev: drop drm device parameter from intel_fbdev_fb_fill_info() 2026-03-18 13:29 ` [PATCH 2/5] drm/{i915, xe}/fbdev: drop drm device parameter from intel_fbdev_fb_fill_info() Jani Nikula @ 2026-03-24 23:34 ` Michał Grzelak 0 siblings, 0 replies; 16+ messages in thread From: Michał Grzelak @ 2026-03-24 23:34 UTC (permalink / raw) To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org [-- Attachment #1: Type: text/plain, Size: 376 bytes --] On Wed, 18 Mar 2026, Jani Nikula wrote: > The struct drm_device *drm parameter of intel_fbdev_fb_fill_info() is > redundant, as you can obtain the same information via obj->dev. Drop the > drm parameter, and move obj as first (or the context) parameter. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Michał Grzelak <michal.grzelak@intel.com> BR, Michał ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 3/5] drm/{i915,xe}: move fbdev fb calls to parent interface 2026-03-18 13:29 [PATCH 0/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula 2026-03-18 13:29 ` [PATCH 1/5] drm/xe/fbdev: put intel_fbdev_fb_prefer_stolen() behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) Jani Nikula 2026-03-18 13:29 ` [PATCH 2/5] drm/{i915, xe}/fbdev: drop drm device parameter from intel_fbdev_fb_fill_info() Jani Nikula @ 2026-03-18 13:29 ` Jani Nikula 2026-03-24 23:42 ` Michał Grzelak 2026-03-18 13:29 ` [PATCH 4/5] drm/i915: pass struct drm_i915_private to i915_bo_fbdev_prefer_stolen() Jani Nikula ` (3 subsequent siblings) 6 siblings, 1 reply; 16+ messages in thread From: Jani Nikula @ 2026-03-18 13:29 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula Move the driver specific fbdev fb calls to the display parent interface. Reuse the existing struct intel_display_bo_interface, as this is mostly about gem objects. Put everything behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) to catch configuration issues at build or link time. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/Makefile | 3 +- drivers/gpu/drm/i915/display/intel_bo.c | 27 ++++ drivers/gpu/drm/i915/display/intel_bo.h | 8 ++ drivers/gpu/drm/i915/display/intel_fbdev.c | 14 +-- drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 118 ------------------ drivers/gpu/drm/i915/display/intel_fbdev_fb.h | 24 ---- drivers/gpu/drm/i915/i915_bo.c | 116 +++++++++++++++++ drivers/gpu/drm/i915/i915_bo.h | 6 + drivers/gpu/drm/i915/i915_initial_plane.c | 4 +- drivers/gpu/drm/xe/Makefile | 1 - drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 116 ----------------- drivers/gpu/drm/xe/display/xe_display_bo.c | 117 +++++++++++++++++ drivers/gpu/drm/xe/display/xe_display_bo.h | 6 + drivers/gpu/drm/xe/display/xe_initial_plane.c | 4 +- include/drm/intel/display_parent_interface.h | 7 ++ 15 files changed, 299 insertions(+), 272 deletions(-) delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.c delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.h delete mode 100644 drivers/gpu/drm/xe/display/intel_fbdev_fb.c diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index be976a90c5a6..026614d74cc4 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -324,8 +324,7 @@ i915-$(CONFIG_ACPI) += \ display/intel_acpi.o \ display/intel_opregion.o i915-$(CONFIG_DRM_FBDEV_EMULATION) += \ - display/intel_fbdev.o \ - display/intel_fbdev_fb.o + display/intel_fbdev.o i915-$(CONFIG_DEBUG_FS) += \ display/intel_display_debugfs.o \ display/intel_display_debugfs_params.o \ diff --git a/drivers/gpu/drm/i915/display/intel_bo.c b/drivers/gpu/drm/i915/display/intel_bo.c index 3b82d38a0504..8ecdbb7e39f3 100644 --- a/drivers/gpu/drm/i915/display/intel_bo.c +++ b/drivers/gpu/drm/i915/display/intel_bo.c @@ -85,3 +85,30 @@ struct drm_gem_object *intel_bo_framebuffer_lookup(struct intel_display *display { return display->parent->bo->framebuffer_lookup(display->drm, filp, user_mode_cmd); } + +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride) +{ + return display->parent->bo->fbdev_pitch_align(stride); +} + +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display *display, int size) +{ + return display->parent->bo->fbdev_create(display->drm, size); +} + +void intel_bo_fbdev_destroy(struct drm_gem_object *obj) +{ + struct intel_display *display = to_intel_display(obj->dev); + + display->parent->bo->fbdev_destroy(obj); +} + +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info *info, + struct i915_vma *vma) +{ + struct intel_display *display = to_intel_display(obj->dev); + + return display->parent->bo->fbdev_fill_info(obj, info, vma); +} +#endif diff --git a/drivers/gpu/drm/i915/display/intel_bo.h b/drivers/gpu/drm/i915/display/intel_bo.h index aec188c706c2..348f7fa66960 100644 --- a/drivers/gpu/drm/i915/display/intel_bo.h +++ b/drivers/gpu/drm/i915/display/intel_bo.h @@ -10,6 +10,8 @@ struct drm_file; struct drm_gem_object; struct drm_mode_fb_cmd2; struct drm_scanout_buffer; +struct fb_info; +struct i915_vma; struct intel_display; struct intel_framebuffer; struct seq_file; @@ -31,4 +33,10 @@ 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); +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride); +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display *display, int size); +void intel_bo_fbdev_destroy(struct drm_gem_object *obj); +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info *info, + struct i915_vma *vma); + #endif /* __INTEL_BO__ */ diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index 6401aaaba199..14ac01c1b3eb 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -54,7 +54,6 @@ #include "intel_fb.h" #include "intel_fb_pin.h" #include "intel_fbdev.h" -#include "intel_fbdev_fb.h" #include "intel_frontbuffer.h" struct intel_fbdev { @@ -204,7 +203,8 @@ static const struct drm_fb_helper_funcs intel_fb_helper_funcs = { .fb_set_suspend = intelfb_set_suspend, }; -static void intel_fbdev_fill_mode_cmd(struct drm_fb_helper_surface_size *sizes, +static void intel_fbdev_fill_mode_cmd(struct intel_display *display, + struct drm_fb_helper_surface_size *sizes, struct drm_mode_fb_cmd2 *mode_cmd) { /* we don't do packed 24bpp */ @@ -215,7 +215,7 @@ static void intel_fbdev_fill_mode_cmd(struct drm_fb_helper_surface_size *sizes, mode_cmd->width = sizes->surface_width; mode_cmd->height = sizes->surface_height; - mode_cmd->pitches[0] = intel_fbdev_fb_pitch_align(mode_cmd->width * DIV_ROUND_UP(sizes->surface_bpp, 8)); + mode_cmd->pitches[0] = intel_bo_fbdev_pitch_align(display, mode_cmd->width * DIV_ROUND_UP(sizes->surface_bpp, 8)); mode_cmd->pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, sizes->surface_depth); mode_cmd->modifier[0] = DRM_FORMAT_MOD_LINEAR; @@ -230,12 +230,12 @@ __intel_fbdev_fb_alloc(struct intel_display *display, struct drm_gem_object *obj; int size; - intel_fbdev_fill_mode_cmd(sizes, &mode_cmd); + intel_fbdev_fill_mode_cmd(display, sizes, &mode_cmd); size = mode_cmd.pitches[0] * mode_cmd.height; size = PAGE_ALIGN(size); - obj = intel_fbdev_fb_bo_create(display->drm, size); + obj = intel_bo_fbdev_create(display, size); if (IS_ERR(obj)) { fb = ERR_CAST(obj); goto err; @@ -247,7 +247,7 @@ __intel_fbdev_fb_alloc(struct intel_display *display, mode_cmd.modifier[0]), &mode_cmd); if (IS_ERR(fb)) { - intel_fbdev_fb_bo_destroy(obj); + intel_bo_fbdev_destroy(obj); goto err; } @@ -327,7 +327,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, obj = intel_fb_bo(&fb->base); - ret = intel_fbdev_fb_fill_info(obj, info, vma); + ret = intel_bo_fbdev_fill_info(obj, info, vma); if (ret) goto out_unpin; diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c b/drivers/gpu/drm/i915/display/intel_fbdev_fb.c deleted file mode 100644 index a696ce42d10b..000000000000 --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c +++ /dev/null @@ -1,118 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Copyright © 2023 Intel Corporation - */ - -#include <linux/fb.h> - -#include <drm/drm_print.h> - -#include "gem/i915_gem_lmem.h" - -#include "i915_drv.h" -#include "intel_fbdev_fb.h" - -u32 intel_fbdev_fb_pitch_align(u32 stride) -{ - return ALIGN(stride, 64); -} - -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size) -{ - struct drm_i915_private *i915 = to_i915(drm); - - /* Skip stolen on MTL as Wa_22018444074 mitigation. */ - if (IS_METEORLAKE(i915)) - return false; - - /* - * If the FB is too big, just don't use it since fbdev is not very - * important and we should probably use that space with FBC or other - * features. - */ - return i915->dsm.usable_size >= size * 2; -} - -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size) -{ - struct drm_i915_private *i915 = to_i915(drm); - struct drm_i915_gem_object *obj; - - obj = ERR_PTR(-ENODEV); - if (HAS_LMEM(i915)) { - obj = i915_gem_object_create_lmem(i915, size, - I915_BO_ALLOC_CONTIGUOUS | - I915_BO_ALLOC_USER); - } else { - if (intel_fbdev_fb_prefer_stolen(drm, size)) - obj = i915_gem_object_create_stolen(i915, size); - else - drm_info(drm, "Allocating fbdev: Stolen memory not preferred.\n"); - - if (IS_ERR(obj)) - obj = i915_gem_object_create_shmem(i915, size); - } - - if (IS_ERR(obj)) { - drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); - return ERR_PTR(-ENOMEM); - } - - return &obj->base; -} - -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) -{ - drm_gem_object_put(obj); -} - -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, - struct i915_vma *vma) -{ - struct drm_i915_private *i915 = to_i915(_obj->dev); - struct drm_i915_gem_object *obj = to_intel_bo(_obj); - struct i915_gem_ww_ctx ww; - void __iomem *vaddr; - int ret; - - if (i915_gem_object_is_lmem(obj)) { - struct intel_memory_region *mem = obj->mm.region; - - /* Use fbdev's framebuffer from lmem for discrete */ - info->fix.smem_start = - (unsigned long)(mem->io.start + - i915_gem_object_get_dma_address(obj, 0) - - mem->region.start); - info->fix.smem_len = obj->base.size; - } else { - struct i915_ggtt *ggtt = to_gt(i915)->ggtt; - - /* Our framebuffer is the entirety of fbdev's system memory */ - info->fix.smem_start = - (unsigned long)(ggtt->gmadr.start + i915_ggtt_offset(vma)); - info->fix.smem_len = vma->size; - } - - for_i915_gem_ww(&ww, ret, false) { - ret = i915_gem_object_lock(vma->obj, &ww); - - if (ret) - continue; - - vaddr = i915_vma_pin_iomap(vma); - if (IS_ERR(vaddr)) { - drm_err(&i915->drm, - "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); - ret = PTR_ERR(vaddr); - continue; - } - } - - if (ret) - return ret; - - info->screen_base = vaddr; - info->screen_size = intel_bo_to_drm_bo(obj)->size; - - return 0; -} diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h b/drivers/gpu/drm/i915/display/intel_fbdev_fb.h deleted file mode 100644 index ddba45e9839d..000000000000 --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h +++ /dev/null @@ -1,24 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Copyright © 2023 Intel Corporation - */ - -#ifndef __INTEL_FBDEV_FB_H__ -#define __INTEL_FBDEV_FB_H__ - -#include <linux/types.h> - -struct drm_device; -struct drm_gem_object; -struct drm_mode_fb_cmd2; -struct fb_info; -struct i915_vma; - -u32 intel_fbdev_fb_pitch_align(u32 stride); -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size); -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj); -int intel_fbdev_fb_fill_info(struct drm_gem_object *obj, struct fb_info *info, - struct i915_vma *vma); -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size); - -#endif diff --git a/drivers/gpu/drm/i915/i915_bo.c b/drivers/gpu/drm/i915/i915_bo.c index 1789f7cab05c..7e38d002478e 100644 --- a/drivers/gpu/drm/i915/i915_bo.c +++ b/drivers/gpu/drm/i915/i915_bo.c @@ -1,11 +1,14 @@ // SPDX-License-Identifier: MIT /* Copyright © 2024 Intel Corporation */ +#include <linux/fb.h> + #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_lmem.h" #include "gem/i915_gem_mman.h" #include "gem/i915_gem_object.h" #include "gem/i915_gem_object_frontbuffer.h" @@ -141,6 +144,113 @@ i915_bo_framebuffer_lookup(struct drm_device *drm, return intel_bo_to_drm_bo(obj); } +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) +static u32 i915_bo_fbdev_pitch_align(u32 stride) +{ + return ALIGN(stride, 64); +} + +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) +{ + struct drm_i915_private *i915 = to_i915(drm); + + /* Skip stolen on MTL as Wa_22018444074 mitigation. */ + if (IS_METEORLAKE(i915)) + return false; + + /* + * If the FB is too big, just don't use it since fbdev is not very + * important and we should probably use that space with FBC or other + * features. + */ + return i915->dsm.usable_size >= size * 2; +} + +static struct drm_gem_object *i915_bo_fbdev_create(struct drm_device *drm, int size) +{ + struct drm_i915_private *i915 = to_i915(drm); + struct drm_i915_gem_object *obj; + + obj = ERR_PTR(-ENODEV); + if (HAS_LMEM(i915)) { + obj = i915_gem_object_create_lmem(i915, size, + I915_BO_ALLOC_CONTIGUOUS | + I915_BO_ALLOC_USER); + } else { + if (i915_bo_fbdev_prefer_stolen(drm, size)) + obj = i915_gem_object_create_stolen(i915, size); + else + drm_info(drm, "Allocating fbdev: Stolen memory not preferred.\n"); + + if (IS_ERR(obj)) + obj = i915_gem_object_create_shmem(i915, size); + } + + if (IS_ERR(obj)) { + drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); + return ERR_PTR(-ENOMEM); + } + + return &obj->base; +} + +static void i915_bo_fbdev_destroy(struct drm_gem_object *obj) +{ + drm_gem_object_put(obj); +} + +static int i915_bo_fbdev_fill_info(struct drm_gem_object *_obj, struct fb_info *info, + struct i915_vma *vma) +{ + struct drm_i915_private *i915 = to_i915(_obj->dev); + struct drm_i915_gem_object *obj = to_intel_bo(_obj); + struct i915_gem_ww_ctx ww; + void __iomem *vaddr; + int ret; + + if (i915_gem_object_is_lmem(obj)) { + struct intel_memory_region *mem = obj->mm.region; + + /* Use fbdev's framebuffer from lmem for discrete */ + info->fix.smem_start = + (unsigned long)(mem->io.start + + i915_gem_object_get_dma_address(obj, 0) - + mem->region.start); + info->fix.smem_len = obj->base.size; + } else { + struct i915_ggtt *ggtt = to_gt(i915)->ggtt; + + /* Our framebuffer is the entirety of fbdev's system memory */ + info->fix.smem_start = + (unsigned long)(ggtt->gmadr.start + i915_ggtt_offset(vma)); + info->fix.smem_len = vma->size; + } + + for_i915_gem_ww(&ww, ret, false) { + ret = i915_gem_object_lock(vma->obj, &ww); + + if (ret) + continue; + + vaddr = i915_vma_pin_iomap(vma); + if (IS_ERR(vaddr)) { + drm_err(&i915->drm, + "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); + ret = PTR_ERR(vaddr); + continue; + } + } + + if (ret) + return ret; + + info->screen_base = vaddr; + info->screen_size = intel_bo_to_drm_bo(obj)->size; + + return 0; +} +#endif + const struct intel_display_bo_interface i915_display_bo_interface = { .is_tiled = i915_bo_is_tiled, .is_userptr = i915_bo_is_userptr, @@ -153,4 +263,10 @@ const struct intel_display_bo_interface i915_display_bo_interface = { .framebuffer_init = i915_bo_framebuffer_init, .framebuffer_fini = i915_bo_framebuffer_fini, .framebuffer_lookup = i915_bo_framebuffer_lookup, +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) + .fbdev_create = i915_bo_fbdev_create, + .fbdev_destroy = i915_bo_fbdev_destroy, + .fbdev_fill_info = i915_bo_fbdev_fill_info, + .fbdev_pitch_align = i915_bo_fbdev_pitch_align, +#endif }; diff --git a/drivers/gpu/drm/i915/i915_bo.h b/drivers/gpu/drm/i915/i915_bo.h index 57255d052dd9..2a0f3050dd42 100644 --- a/drivers/gpu/drm/i915/i915_bo.h +++ b/drivers/gpu/drm/i915/i915_bo.h @@ -4,6 +4,12 @@ #ifndef __I915_BO_H__ #define __I915_BO_H__ +#include <linux/types.h> + +struct drm_device; + +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); + extern const struct intel_display_bo_interface i915_display_bo_interface; #endif /* __I915_BO_H__ */ diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c b/drivers/gpu/drm/i915/i915_initial_plane.c index 390a9248d631..f4d631a395d0 100644 --- a/drivers/gpu/drm/i915/i915_initial_plane.c +++ b/drivers/gpu/drm/i915/i915_initial_plane.c @@ -9,10 +9,10 @@ #include "display/intel_crtc.h" #include "display/intel_display_types.h" #include "display/intel_fb.h" -#include "display/intel_fbdev_fb.h" #include "gem/i915_gem_lmem.h" #include "gem/i915_gem_region.h" +#include "i915_bo.h" #include "i915_drv.h" #include "i915_initial_plane.h" @@ -118,7 +118,7 @@ initial_plane_vma(struct drm_i915_private *i915, if (IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && mem == i915->mm.stolen_region && - !intel_fbdev_fb_prefer_stolen(&i915->drm, size)) { + !i915_bo_fbdev_prefer_stolen(&i915->drm, size)) { drm_dbg_kms(&i915->drm, "Initial FB size exceeds half of stolen, discarding\n"); return NULL; } diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile index dab979287a96..936eb79e9269 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_fbdev_fb.o \ display/xe_display.o \ display/xe_display_bo.o \ display/xe_display_pcode.o \ diff --git a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c b/drivers/gpu/drm/xe/display/intel_fbdev_fb.c deleted file mode 100644 index 2ad5e5a79287..000000000000 --- a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c +++ /dev/null @@ -1,116 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Copyright © 2023 Intel Corporation - */ - -#include <linux/fb.h> - -#include "intel_fbdev_fb.h" -#include "xe_bo.h" -#include "xe_ttm_stolen_mgr.h" -#include "xe_wa.h" - -#include <generated/xe_device_wa_oob.h> - -/* - * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride - * alignment. The same 64 as i915 uses should be fine, and we shouldn't need to - * have driver specific values. However, dropping the stride alignment to 64 - * leads to underflowing the bo pin count in the atomic cleanup work. - */ -u32 intel_fbdev_fb_pitch_align(u32 stride) -{ - return ALIGN(stride, XE_PAGE_SIZE); -} - -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size) -{ - struct xe_device *xe = to_xe_device(drm); - struct ttm_resource_manager *stolen; - - stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); - if (!stolen) - return false; - - if (IS_DGFX(xe)) - return false; - - if (XE_DEVICE_WA(xe, 22019338487_display)) - return false; - - /* - * If the FB is too big, just don't use it since fbdev is not very - * important and we should probably use that space with FBC or other - * features. - */ - return stolen->size >= size * 2; -} - -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size) -{ - struct xe_device *xe = to_xe_device(drm); - struct xe_bo *obj; - - obj = ERR_PTR(-ENODEV); - - if (intel_fbdev_fb_prefer_stolen(drm, size)) { - obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), - size, - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | - XE_BO_FLAG_STOLEN | - XE_BO_FLAG_GGTT, false); - if (!IS_ERR(obj)) - drm_info(&xe->drm, "Allocated fbdev into stolen\n"); - else - drm_info(&xe->drm, "Allocated fbdev into stolen failed: %li\n", PTR_ERR(obj)); - } else { - drm_info(&xe->drm, "Allocating fbdev: Stolen memory not preferred.\n"); - } - - if (IS_ERR(obj)) { - obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | - XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | - XE_BO_FLAG_GGTT, false); - } - - if (IS_ERR(obj)) { - drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", obj); - return ERR_PTR(-ENOMEM); - } - - return &obj->ttm.base; -} - -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) -{ - xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); -} - -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, - struct i915_vma *vma) -{ - struct xe_bo *obj = gem_to_xe_bo(_obj); - struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); - - if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { - if (obj->flags & XE_BO_FLAG_STOLEN) - info->fix.smem_start = xe_ttm_stolen_io_offset(obj, 0); - else - info->fix.smem_start = - pci_resource_start(pdev, 2) + - xe_bo_addr(obj, 0, XE_PAGE_SIZE); - - info->fix.smem_len = obj->ttm.base.size; - } else { - /* XXX: Pure fiction, as the BO may not be physically accessible.. */ - info->fix.smem_start = 0; - info->fix.smem_len = obj->ttm.base.size; - } - XE_WARN_ON(iosys_map_is_null(&obj->vmap)); - - info->screen_base = obj->vmap.vaddr_iomem; - info->screen_size = obj->ttm.base.size; - - return 0; -} diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c b/drivers/gpu/drm/xe/display/xe_display_bo.c index a689f71e7b14..10436edecc35 100644 --- a/drivers/gpu/drm/xe/display/xe_display_bo.c +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c @@ -1,6 +1,8 @@ // SPDX-License-Identifier: MIT /* Copyright © 2024 Intel Corporation */ +#include <linux/fb.h> + #include <drm/drm_gem.h> #include <drm/intel/display_parent_interface.h> @@ -8,6 +10,10 @@ #include "xe_bo.h" #include "xe_display_bo.h" #include "xe_pxp.h" +#include "xe_ttm_stolen_mgr.h" +#include "xe_wa.h" + +#include <generated/xe_device_wa_oob.h> static bool xe_display_bo_is_protected(struct drm_gem_object *obj) { @@ -101,6 +107,111 @@ xe_display_bo_framebuffer_lookup(struct drm_device *drm, return gem; } +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) +/* + * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride + * alignment. The same 64 as i915 uses should be fine, and we shouldn't need to + * have driver specific values. However, dropping the stride alignment to 64 + * leads to underflowing the bo pin count in the atomic cleanup work. + */ +static u32 xe_display_bo_fbdev_pitch_align(u32 stride) +{ + return ALIGN(stride, XE_PAGE_SIZE); +} + +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) +{ + struct xe_device *xe = to_xe_device(drm); + struct ttm_resource_manager *stolen; + + stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); + if (!stolen) + return false; + + if (IS_DGFX(xe)) + return false; + + if (XE_DEVICE_WA(xe, 22019338487_display)) + return false; + + /* + * If the FB is too big, just don't use it since fbdev is not very + * important and we should probably use that space with FBC or other + * features. + */ + return stolen->size >= size * 2; +} + +static struct drm_gem_object *xe_display_bo_fbdev_create(struct drm_device *drm, int size) +{ + struct xe_device *xe = to_xe_device(drm); + struct xe_bo *obj; + + obj = ERR_PTR(-ENODEV); + + if (xe_display_bo_fbdev_prefer_stolen(drm, size)) { + obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), + size, + ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | + XE_BO_FLAG_STOLEN | + XE_BO_FLAG_GGTT, false); + if (!IS_ERR(obj)) + drm_info(&xe->drm, "Allocated fbdev into stolen\n"); + else + drm_info(&xe->drm, "Allocated fbdev into stolen failed: %li\n", PTR_ERR(obj)); + } else { + drm_info(&xe->drm, "Allocating fbdev: Stolen memory not preferred.\n"); + } + + if (IS_ERR(obj)) { + obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, + ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | + XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | + XE_BO_FLAG_GGTT, false); + } + + if (IS_ERR(obj)) { + drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", obj); + return ERR_PTR(-ENOMEM); + } + + return &obj->ttm.base; +} + +static void xe_display_bo_fbdev_destroy(struct drm_gem_object *obj) +{ + xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); +} + +static int xe_display_bo_fbdev_fill_info(struct drm_gem_object *_obj, struct fb_info *info, + struct i915_vma *vma) +{ + struct xe_bo *obj = gem_to_xe_bo(_obj); + struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); + + if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { + if (obj->flags & XE_BO_FLAG_STOLEN) + info->fix.smem_start = xe_ttm_stolen_io_offset(obj, 0); + else + info->fix.smem_start = + pci_resource_start(pdev, 2) + + xe_bo_addr(obj, 0, XE_PAGE_SIZE); + + info->fix.smem_len = obj->ttm.base.size; + } else { + /* XXX: Pure fiction, as the BO may not be physically accessible.. */ + info->fix.smem_start = 0; + info->fix.smem_len = obj->ttm.base.size; + } + XE_WARN_ON(iosys_map_is_null(&obj->vmap)); + + info->screen_base = obj->vmap.vaddr_iomem; + info->screen_size = obj->ttm.base.size; + + return 0; +} +#endif + const struct intel_display_bo_interface xe_display_bo_interface = { .is_protected = xe_display_bo_is_protected, .key_check = xe_pxp_obj_key_check, @@ -109,4 +220,10 @@ const struct intel_display_bo_interface xe_display_bo_interface = { .framebuffer_init = xe_display_bo_framebuffer_init, .framebuffer_fini = xe_display_bo_framebuffer_fini, .framebuffer_lookup = xe_display_bo_framebuffer_lookup, +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) + .fbdev_create = xe_display_bo_fbdev_create, + .fbdev_destroy = xe_display_bo_fbdev_destroy, + .fbdev_fill_info = xe_display_bo_fbdev_fill_info, + .fbdev_pitch_align = xe_display_bo_fbdev_pitch_align, +#endif }; diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.h b/drivers/gpu/drm/xe/display/xe_display_bo.h index 6879c104b0b1..8980e6ecf54a 100644 --- a/drivers/gpu/drm/xe/display/xe_display_bo.h +++ b/drivers/gpu/drm/xe/display/xe_display_bo.h @@ -4,6 +4,12 @@ #ifndef __XE_DISPLAY_BO_H__ #define __XE_DISPLAY_BO_H__ +#include <linux/types.h> + +struct drm_device; + +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); + extern const struct intel_display_bo_interface xe_display_bo_interface; #endif diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c index 730c6dc49522..6e0a22429184 100644 --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c @@ -12,8 +12,8 @@ #include "intel_display_types.h" #include "intel_fb.h" #include "intel_fb_pin.h" -#include "intel_fbdev_fb.h" #include "xe_bo.h" +#include "xe_display_bo.h" #include "xe_display_vma.h" #include "xe_ggtt.h" #include "xe_mmio.h" @@ -87,7 +87,7 @@ initial_plane_bo(struct xe_device *xe, if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && - !intel_fbdev_fb_prefer_stolen(&xe->drm, plane_config->size)) { + !xe_display_bo_fbdev_prefer_stolen(&xe->drm, plane_config->size)) { drm_info(&xe->drm, "Initial FB size exceeds half of stolen, discarding\n"); return NULL; } diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h index 97ec94a2e749..2fc1794a3da4 100644 --- a/include/drm/intel/display_parent_interface.h +++ b/include/drm/intel/display_parent_interface.h @@ -15,6 +15,7 @@ struct drm_gem_object; struct drm_mode_fb_cmd2; struct drm_plane_state; struct drm_scanout_buffer; +struct fb_info; struct i915_vma; struct intel_dpt; struct intel_dsb_buffer; @@ -43,6 +44,12 @@ struct intel_display_bo_interface { struct drm_gem_object *(*framebuffer_lookup)(struct drm_device *drm, struct drm_file *filp, const struct drm_mode_fb_cmd2 *user_mode_cmd); +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) + struct drm_gem_object *(*fbdev_create)(struct drm_device *drm, int size); + void (*fbdev_destroy)(struct drm_gem_object *obj); + int (*fbdev_fill_info)(struct drm_gem_object *obj, struct fb_info *info, struct i915_vma *vma); + u32 (*fbdev_pitch_align)(u32 stride); +#endif }; struct intel_display_dpt_interface { -- 2.47.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 3/5] drm/{i915,xe}: move fbdev fb calls to parent interface 2026-03-18 13:29 ` [PATCH 3/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula @ 2026-03-24 23:42 ` Michał Grzelak 2026-03-24 23:51 ` Michał Grzelak 2026-03-25 8:13 ` [PATCH 3/5] drm/{i915, xe}: " Jani Nikula 0 siblings, 2 replies; 16+ messages in thread From: Michał Grzelak @ 2026-03-24 23:42 UTC (permalink / raw) To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org [-- Attachment #1: Type: text/plain, Size: 28963 bytes --] On Wed, 18 Mar 2026, Jani Nikula wrote: > Move the driver specific fbdev fb calls to the display parent > interface. Reuse the existing struct intel_display_bo_interface, as this > is mostly about gem objects. > > Put everything behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) to catch > configuration issues at build or link time. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/Makefile | 3 +- > drivers/gpu/drm/i915/display/intel_bo.c | 27 ++++ > drivers/gpu/drm/i915/display/intel_bo.h | 8 ++ > drivers/gpu/drm/i915/display/intel_fbdev.c | 14 +-- > drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 118 ------------------ > drivers/gpu/drm/i915/display/intel_fbdev_fb.h | 24 ---- > drivers/gpu/drm/i915/i915_bo.c | 116 +++++++++++++++++ > drivers/gpu/drm/i915/i915_bo.h | 6 + > drivers/gpu/drm/i915/i915_initial_plane.c | 4 +- > drivers/gpu/drm/xe/Makefile | 1 - > drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 116 ----------------- > drivers/gpu/drm/xe/display/xe_display_bo.c | 117 +++++++++++++++++ > drivers/gpu/drm/xe/display/xe_display_bo.h | 6 + > drivers/gpu/drm/xe/display/xe_initial_plane.c | 4 +- > include/drm/intel/display_parent_interface.h | 7 ++ > 15 files changed, 299 insertions(+), 272 deletions(-) > delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.c > delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.h > delete mode 100644 drivers/gpu/drm/xe/display/intel_fbdev_fb.c > > diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile > index be976a90c5a6..026614d74cc4 100644 > --- a/drivers/gpu/drm/i915/Makefile > +++ b/drivers/gpu/drm/i915/Makefile > @@ -324,8 +324,7 @@ i915-$(CONFIG_ACPI) += \ > display/intel_acpi.o \ > display/intel_opregion.o > i915-$(CONFIG_DRM_FBDEV_EMULATION) += \ > - display/intel_fbdev.o \ > - display/intel_fbdev_fb.o > + display/intel_fbdev.o > i915-$(CONFIG_DEBUG_FS) += \ > display/intel_display_debugfs.o \ > display/intel_display_debugfs_params.o \ > diff --git a/drivers/gpu/drm/i915/display/intel_bo.c b/drivers/gpu/drm/i915/display/intel_bo.c > index 3b82d38a0504..8ecdbb7e39f3 100644 > --- a/drivers/gpu/drm/i915/display/intel_bo.c > +++ b/drivers/gpu/drm/i915/display/intel_bo.c > @@ -85,3 +85,30 @@ struct drm_gem_object *intel_bo_framebuffer_lookup(struct intel_display *display > { > return display->parent->bo->framebuffer_lookup(display->drm, filp, user_mode_cmd); > } > + > +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) > +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride) > +{ > + return display->parent->bo->fbdev_pitch_align(stride); > +} > + > +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display *display, int size) > +{ > + return display->parent->bo->fbdev_create(display->drm, size); > +} > + > +void intel_bo_fbdev_destroy(struct drm_gem_object *obj) > +{ > + struct intel_display *display = to_intel_display(obj->dev); > + > + display->parent->bo->fbdev_destroy(obj); > +} > + > +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info *info, > + struct i915_vma *vma) > +{ > + struct intel_display *display = to_intel_display(obj->dev); > + > + return display->parent->bo->fbdev_fill_info(obj, info, vma); > +} > +#endif > diff --git a/drivers/gpu/drm/i915/display/intel_bo.h b/drivers/gpu/drm/i915/display/intel_bo.h > index aec188c706c2..348f7fa66960 100644 > --- a/drivers/gpu/drm/i915/display/intel_bo.h > +++ b/drivers/gpu/drm/i915/display/intel_bo.h > @@ -10,6 +10,8 @@ struct drm_file; > struct drm_gem_object; > struct drm_mode_fb_cmd2; > struct drm_scanout_buffer; > +struct fb_info; > +struct i915_vma; > struct intel_display; > struct intel_framebuffer; > struct seq_file; > @@ -31,4 +33,10 @@ 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); > > +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride); > +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display *display, int size); > +void intel_bo_fbdev_destroy(struct drm_gem_object *obj); > +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info *info, > + struct i915_vma *vma); > + > #endif /* __INTEL_BO__ */ > diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c > index 6401aaaba199..14ac01c1b3eb 100644 > --- a/drivers/gpu/drm/i915/display/intel_fbdev.c > +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c > @@ -54,7 +54,6 @@ > #include "intel_fb.h" > #include "intel_fb_pin.h" > #include "intel_fbdev.h" > -#include "intel_fbdev_fb.h" > #include "intel_frontbuffer.h" > > struct intel_fbdev { > @@ -204,7 +203,8 @@ static const struct drm_fb_helper_funcs intel_fb_helper_funcs = { > .fb_set_suspend = intelfb_set_suspend, > }; > > -static void intel_fbdev_fill_mode_cmd(struct drm_fb_helper_surface_size *sizes, > +static void intel_fbdev_fill_mode_cmd(struct intel_display *display, > + struct drm_fb_helper_surface_size *sizes, > struct drm_mode_fb_cmd2 *mode_cmd) > { > /* we don't do packed 24bpp */ > @@ -215,7 +215,7 @@ static void intel_fbdev_fill_mode_cmd(struct drm_fb_helper_surface_size *sizes, > mode_cmd->width = sizes->surface_width; > mode_cmd->height = sizes->surface_height; > > - mode_cmd->pitches[0] = intel_fbdev_fb_pitch_align(mode_cmd->width * DIV_ROUND_UP(sizes->surface_bpp, 8)); > + mode_cmd->pitches[0] = intel_bo_fbdev_pitch_align(display, mode_cmd->width * DIV_ROUND_UP(sizes->surface_bpp, 8)); > mode_cmd->pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, > sizes->surface_depth); > mode_cmd->modifier[0] = DRM_FORMAT_MOD_LINEAR; > @@ -230,12 +230,12 @@ __intel_fbdev_fb_alloc(struct intel_display *display, > struct drm_gem_object *obj; > int size; > > - intel_fbdev_fill_mode_cmd(sizes, &mode_cmd); > + intel_fbdev_fill_mode_cmd(display, sizes, &mode_cmd); > > size = mode_cmd.pitches[0] * mode_cmd.height; > size = PAGE_ALIGN(size); > > - obj = intel_fbdev_fb_bo_create(display->drm, size); > + obj = intel_bo_fbdev_create(display, size); > if (IS_ERR(obj)) { > fb = ERR_CAST(obj); > goto err; > @@ -247,7 +247,7 @@ __intel_fbdev_fb_alloc(struct intel_display *display, > mode_cmd.modifier[0]), > &mode_cmd); > if (IS_ERR(fb)) { > - intel_fbdev_fb_bo_destroy(obj); > + intel_bo_fbdev_destroy(obj); > goto err; > } > > @@ -327,7 +327,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, > > obj = intel_fb_bo(&fb->base); > > - ret = intel_fbdev_fb_fill_info(obj, info, vma); > + ret = intel_bo_fbdev_fill_info(obj, info, vma); > if (ret) > goto out_unpin; > > diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c b/drivers/gpu/drm/i915/display/intel_fbdev_fb.c > deleted file mode 100644 > index a696ce42d10b..000000000000 > --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c > +++ /dev/null > @@ -1,118 +0,0 @@ > -/* SPDX-License-Identifier: MIT */ > -/* > - * Copyright © 2023 Intel Corporation > - */ > - > -#include <linux/fb.h> > - > -#include <drm/drm_print.h> > - > -#include "gem/i915_gem_lmem.h" > - > -#include "i915_drv.h" > -#include "intel_fbdev_fb.h" > - > -u32 intel_fbdev_fb_pitch_align(u32 stride) > -{ > - return ALIGN(stride, 64); > -} > - > -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size) > -{ > - struct drm_i915_private *i915 = to_i915(drm); > - > - /* Skip stolen on MTL as Wa_22018444074 mitigation. */ > - if (IS_METEORLAKE(i915)) > - return false; > - > - /* > - * If the FB is too big, just don't use it since fbdev is not very > - * important and we should probably use that space with FBC or other > - * features. > - */ > - return i915->dsm.usable_size >= size * 2; > -} > - > -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size) > -{ > - struct drm_i915_private *i915 = to_i915(drm); > - struct drm_i915_gem_object *obj; > - > - obj = ERR_PTR(-ENODEV); > - if (HAS_LMEM(i915)) { > - obj = i915_gem_object_create_lmem(i915, size, > - I915_BO_ALLOC_CONTIGUOUS | > - I915_BO_ALLOC_USER); > - } else { > - if (intel_fbdev_fb_prefer_stolen(drm, size)) > - obj = i915_gem_object_create_stolen(i915, size); > - else > - drm_info(drm, "Allocating fbdev: Stolen memory not preferred.\n"); > - > - if (IS_ERR(obj)) > - obj = i915_gem_object_create_shmem(i915, size); > - } > - > - if (IS_ERR(obj)) { > - drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); > - return ERR_PTR(-ENOMEM); > - } > - > - return &obj->base; > -} > - > -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) > -{ > - drm_gem_object_put(obj); > -} > - > -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, > - struct i915_vma *vma) > -{ > - struct drm_i915_private *i915 = to_i915(_obj->dev); > - struct drm_i915_gem_object *obj = to_intel_bo(_obj); > - struct i915_gem_ww_ctx ww; > - void __iomem *vaddr; > - int ret; > - > - if (i915_gem_object_is_lmem(obj)) { > - struct intel_memory_region *mem = obj->mm.region; > - > - /* Use fbdev's framebuffer from lmem for discrete */ > - info->fix.smem_start = > - (unsigned long)(mem->io.start + > - i915_gem_object_get_dma_address(obj, 0) - > - mem->region.start); > - info->fix.smem_len = obj->base.size; > - } else { > - struct i915_ggtt *ggtt = to_gt(i915)->ggtt; > - > - /* Our framebuffer is the entirety of fbdev's system memory */ > - info->fix.smem_start = > - (unsigned long)(ggtt->gmadr.start + i915_ggtt_offset(vma)); > - info->fix.smem_len = vma->size; > - } > - > - for_i915_gem_ww(&ww, ret, false) { > - ret = i915_gem_object_lock(vma->obj, &ww); > - > - if (ret) > - continue; > - > - vaddr = i915_vma_pin_iomap(vma); > - if (IS_ERR(vaddr)) { > - drm_err(&i915->drm, > - "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); > - ret = PTR_ERR(vaddr); > - continue; > - } > - } > - > - if (ret) > - return ret; > - > - info->screen_base = vaddr; > - info->screen_size = intel_bo_to_drm_bo(obj)->size; > - > - return 0; > -} > diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h b/drivers/gpu/drm/i915/display/intel_fbdev_fb.h > deleted file mode 100644 > index ddba45e9839d..000000000000 > --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h > +++ /dev/null > @@ -1,24 +0,0 @@ > -/* SPDX-License-Identifier: MIT */ > -/* > - * Copyright © 2023 Intel Corporation > - */ > - > -#ifndef __INTEL_FBDEV_FB_H__ > -#define __INTEL_FBDEV_FB_H__ > - > -#include <linux/types.h> > - > -struct drm_device; > -struct drm_gem_object; > -struct drm_mode_fb_cmd2; > -struct fb_info; > -struct i915_vma; > - > -u32 intel_fbdev_fb_pitch_align(u32 stride); > -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size); > -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj); > -int intel_fbdev_fb_fill_info(struct drm_gem_object *obj, struct fb_info *info, > - struct i915_vma *vma); > -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size); > - > -#endif > diff --git a/drivers/gpu/drm/i915/i915_bo.c b/drivers/gpu/drm/i915/i915_bo.c > index 1789f7cab05c..7e38d002478e 100644 > --- a/drivers/gpu/drm/i915/i915_bo.c > +++ b/drivers/gpu/drm/i915/i915_bo.c > @@ -1,11 +1,14 @@ > // SPDX-License-Identifier: MIT > /* Copyright © 2024 Intel Corporation */ > > +#include <linux/fb.h> > + > #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_lmem.h" > #include "gem/i915_gem_mman.h" > #include "gem/i915_gem_object.h" > #include "gem/i915_gem_object_frontbuffer.h" > @@ -141,6 +144,113 @@ i915_bo_framebuffer_lookup(struct drm_device *drm, > return intel_bo_to_drm_bo(obj); > } > > +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) > +static u32 i915_bo_fbdev_pitch_align(u32 stride) > +{ > + return ALIGN(stride, 64); > +} > + > +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) > +{ > + struct drm_i915_private *i915 = to_i915(drm); > + > + /* Skip stolen on MTL as Wa_22018444074 mitigation. */ > + if (IS_METEORLAKE(i915)) > + return false; > + > + /* > + * If the FB is too big, just don't use it since fbdev is not very > + * important and we should probably use that space with FBC or other > + * features. > + */ > + return i915->dsm.usable_size >= size * 2; > +} > + > +static struct drm_gem_object *i915_bo_fbdev_create(struct drm_device *drm, int size) > +{ > + struct drm_i915_private *i915 = to_i915(drm); Can we add same trick for i915_bo_fbdev_create() as we are doing with i915_bo_fbdev_prefer_stolen() in patch [4/5]? Or e.g. add a separate 6th patch for that? Up to patch reordering, of course. > + struct drm_i915_gem_object *obj; > + > + obj = ERR_PTR(-ENODEV); > + if (HAS_LMEM(i915)) { > + obj = i915_gem_object_create_lmem(i915, size, > + I915_BO_ALLOC_CONTIGUOUS | > + I915_BO_ALLOC_USER); > + } else { > + if (i915_bo_fbdev_prefer_stolen(drm, size)) > + obj = i915_gem_object_create_stolen(i915, size); > + else > + drm_info(drm, "Allocating fbdev: Stolen memory not preferred.\n"); > + > + if (IS_ERR(obj)) > + obj = i915_gem_object_create_shmem(i915, size); > + } > + > + if (IS_ERR(obj)) { > + drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); > + return ERR_PTR(-ENOMEM); > + } > + > + return &obj->base; > +} > + > +static void i915_bo_fbdev_destroy(struct drm_gem_object *obj) > +{ > + drm_gem_object_put(obj); > +} > + > +static int i915_bo_fbdev_fill_info(struct drm_gem_object *_obj, struct fb_info *info, > + struct i915_vma *vma) > +{ > + struct drm_i915_private *i915 = to_i915(_obj->dev); > + struct drm_i915_gem_object *obj = to_intel_bo(_obj); > + struct i915_gem_ww_ctx ww; > + void __iomem *vaddr; > + int ret; > + > + if (i915_gem_object_is_lmem(obj)) { > + struct intel_memory_region *mem = obj->mm.region; > + > + /* Use fbdev's framebuffer from lmem for discrete */ > + info->fix.smem_start = > + (unsigned long)(mem->io.start + > + i915_gem_object_get_dma_address(obj, 0) - > + mem->region.start); > + info->fix.smem_len = obj->base.size; > + } else { > + struct i915_ggtt *ggtt = to_gt(i915)->ggtt; > + > + /* Our framebuffer is the entirety of fbdev's system memory */ > + info->fix.smem_start = > + (unsigned long)(ggtt->gmadr.start + i915_ggtt_offset(vma)); > + info->fix.smem_len = vma->size; > + } > + > + for_i915_gem_ww(&ww, ret, false) { > + ret = i915_gem_object_lock(vma->obj, &ww); > + > + if (ret) > + continue; > + > + vaddr = i915_vma_pin_iomap(vma); > + if (IS_ERR(vaddr)) { > + drm_err(&i915->drm, > + "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); > + ret = PTR_ERR(vaddr); > + continue; > + } > + } > + > + if (ret) > + return ret; > + > + info->screen_base = vaddr; > + info->screen_size = intel_bo_to_drm_bo(obj)->size; > + > + return 0; > +} > +#endif > + > const struct intel_display_bo_interface i915_display_bo_interface = { > .is_tiled = i915_bo_is_tiled, > .is_userptr = i915_bo_is_userptr, > @@ -153,4 +263,10 @@ const struct intel_display_bo_interface i915_display_bo_interface = { > .framebuffer_init = i915_bo_framebuffer_init, > .framebuffer_fini = i915_bo_framebuffer_fini, > .framebuffer_lookup = i915_bo_framebuffer_lookup, > +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) > + .fbdev_create = i915_bo_fbdev_create, > + .fbdev_destroy = i915_bo_fbdev_destroy, > + .fbdev_fill_info = i915_bo_fbdev_fill_info, > + .fbdev_pitch_align = i915_bo_fbdev_pitch_align, > +#endif > }; > diff --git a/drivers/gpu/drm/i915/i915_bo.h b/drivers/gpu/drm/i915/i915_bo.h > index 57255d052dd9..2a0f3050dd42 100644 > --- a/drivers/gpu/drm/i915/i915_bo.h > +++ b/drivers/gpu/drm/i915/i915_bo.h > @@ -4,6 +4,12 @@ > #ifndef __I915_BO_H__ > #define __I915_BO_H__ > > +#include <linux/types.h> > + > +struct drm_device; > + > +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); > + > extern const struct intel_display_bo_interface i915_display_bo_interface; > > #endif /* __I915_BO_H__ */ > diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c b/drivers/gpu/drm/i915/i915_initial_plane.c > index 390a9248d631..f4d631a395d0 100644 > --- a/drivers/gpu/drm/i915/i915_initial_plane.c > +++ b/drivers/gpu/drm/i915/i915_initial_plane.c > @@ -9,10 +9,10 @@ > #include "display/intel_crtc.h" > #include "display/intel_display_types.h" > #include "display/intel_fb.h" > -#include "display/intel_fbdev_fb.h" > #include "gem/i915_gem_lmem.h" > #include "gem/i915_gem_region.h" > > +#include "i915_bo.h" > #include "i915_drv.h" > #include "i915_initial_plane.h" > > @@ -118,7 +118,7 @@ initial_plane_vma(struct drm_i915_private *i915, > if (IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && > IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && > mem == i915->mm.stolen_region && > - !intel_fbdev_fb_prefer_stolen(&i915->drm, size)) { > + !i915_bo_fbdev_prefer_stolen(&i915->drm, size)) { > drm_dbg_kms(&i915->drm, "Initial FB size exceeds half of stolen, discarding\n"); > return NULL; > } > diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile > index dab979287a96..936eb79e9269 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_fbdev_fb.o \ > display/xe_display.o \ > display/xe_display_bo.o \ > display/xe_display_pcode.o \ > diff --git a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c b/drivers/gpu/drm/xe/display/intel_fbdev_fb.c > deleted file mode 100644 > index 2ad5e5a79287..000000000000 > --- a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c > +++ /dev/null > @@ -1,116 +0,0 @@ > -/* SPDX-License-Identifier: MIT */ > -/* > - * Copyright © 2023 Intel Corporation > - */ > - > -#include <linux/fb.h> > - > -#include "intel_fbdev_fb.h" > -#include "xe_bo.h" > -#include "xe_ttm_stolen_mgr.h" > -#include "xe_wa.h" > - > -#include <generated/xe_device_wa_oob.h> > - > -/* > - * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride > - * alignment. The same 64 as i915 uses should be fine, and we shouldn't need to > - * have driver specific values. However, dropping the stride alignment to 64 > - * leads to underflowing the bo pin count in the atomic cleanup work. > - */ > -u32 intel_fbdev_fb_pitch_align(u32 stride) > -{ > - return ALIGN(stride, XE_PAGE_SIZE); > -} > - > -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size) > -{ > - struct xe_device *xe = to_xe_device(drm); > - struct ttm_resource_manager *stolen; > - > - stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); > - if (!stolen) > - return false; > - > - if (IS_DGFX(xe)) > - return false; > - > - if (XE_DEVICE_WA(xe, 22019338487_display)) > - return false; > - > - /* > - * If the FB is too big, just don't use it since fbdev is not very > - * important and we should probably use that space with FBC or other > - * features. > - */ > - return stolen->size >= size * 2; > -} > - > -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size) > -{ > - struct xe_device *xe = to_xe_device(drm); > - struct xe_bo *obj; > - > - obj = ERR_PTR(-ENODEV); > - > - if (intel_fbdev_fb_prefer_stolen(drm, size)) { > - obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), > - size, > - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | > - XE_BO_FLAG_STOLEN | > - XE_BO_FLAG_GGTT, false); > - if (!IS_ERR(obj)) > - drm_info(&xe->drm, "Allocated fbdev into stolen\n"); > - else > - drm_info(&xe->drm, "Allocated fbdev into stolen failed: %li\n", PTR_ERR(obj)); > - } else { > - drm_info(&xe->drm, "Allocating fbdev: Stolen memory not preferred.\n"); > - } > - > - if (IS_ERR(obj)) { > - obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, > - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | > - XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | > - XE_BO_FLAG_GGTT, false); > - } > - > - if (IS_ERR(obj)) { > - drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", obj); > - return ERR_PTR(-ENOMEM); > - } > - > - return &obj->ttm.base; > -} > - > -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) > -{ > - xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); > -} > - > -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, > - struct i915_vma *vma) > -{ > - struct xe_bo *obj = gem_to_xe_bo(_obj); > - struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); > - > - if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { > - if (obj->flags & XE_BO_FLAG_STOLEN) > - info->fix.smem_start = xe_ttm_stolen_io_offset(obj, 0); > - else > - info->fix.smem_start = > - pci_resource_start(pdev, 2) + > - xe_bo_addr(obj, 0, XE_PAGE_SIZE); > - > - info->fix.smem_len = obj->ttm.base.size; > - } else { > - /* XXX: Pure fiction, as the BO may not be physically accessible.. */ > - info->fix.smem_start = 0; > - info->fix.smem_len = obj->ttm.base.size; > - } > - XE_WARN_ON(iosys_map_is_null(&obj->vmap)); > - > - info->screen_base = obj->vmap.vaddr_iomem; > - info->screen_size = obj->ttm.base.size; > - > - return 0; > -} > diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c b/drivers/gpu/drm/xe/display/xe_display_bo.c > index a689f71e7b14..10436edecc35 100644 > --- a/drivers/gpu/drm/xe/display/xe_display_bo.c > +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c > @@ -1,6 +1,8 @@ > // SPDX-License-Identifier: MIT > /* Copyright © 2024 Intel Corporation */ > > +#include <linux/fb.h> > + > #include <drm/drm_gem.h> > #include <drm/intel/display_parent_interface.h> > > @@ -8,6 +10,10 @@ > #include "xe_bo.h" > #include "xe_display_bo.h" > #include "xe_pxp.h" > +#include "xe_ttm_stolen_mgr.h" > +#include "xe_wa.h" > + > +#include <generated/xe_device_wa_oob.h> > > static bool xe_display_bo_is_protected(struct drm_gem_object *obj) > { > @@ -101,6 +107,111 @@ xe_display_bo_framebuffer_lookup(struct drm_device *drm, > return gem; > } > > +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) > +/* > + * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride > + * alignment. The same 64 as i915 uses should be fine, and we shouldn't need to > + * have driver specific values. However, dropping the stride alignment to 64 > + * leads to underflowing the bo pin count in the atomic cleanup work. > + */ > +static u32 xe_display_bo_fbdev_pitch_align(u32 stride) > +{ > + return ALIGN(stride, XE_PAGE_SIZE); > +} > + > +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) > +{ > + struct xe_device *xe = to_xe_device(drm); > + struct ttm_resource_manager *stolen; > + > + stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); > + if (!stolen) > + return false; > + > + if (IS_DGFX(xe)) > + return false; > + > + if (XE_DEVICE_WA(xe, 22019338487_display)) > + return false; > + > + /* > + * If the FB is too big, just don't use it since fbdev is not very > + * important and we should probably use that space with FBC or other > + * features. > + */ > + return stolen->size >= size * 2; > +} > + > +static struct drm_gem_object *xe_display_bo_fbdev_create(struct drm_device *drm, int size) > +{ > + struct xe_device *xe = to_xe_device(drm); Same question here, but adding it in patch [5/5] or as new 7th patch. Up to patch reordering of course. BR, Michał > + struct xe_bo *obj; > + > + obj = ERR_PTR(-ENODEV); > + > + if (xe_display_bo_fbdev_prefer_stolen(drm, size)) { > + obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), > + size, > + ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | > + XE_BO_FLAG_STOLEN | > + XE_BO_FLAG_GGTT, false); > + if (!IS_ERR(obj)) > + drm_info(&xe->drm, "Allocated fbdev into stolen\n"); > + else > + drm_info(&xe->drm, "Allocated fbdev into stolen failed: %li\n", PTR_ERR(obj)); > + } else { > + drm_info(&xe->drm, "Allocating fbdev: Stolen memory not preferred.\n"); > + } > + > + if (IS_ERR(obj)) { > + obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, > + ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | > + XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | > + XE_BO_FLAG_GGTT, false); > + } > + > + if (IS_ERR(obj)) { > + drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", obj); > + return ERR_PTR(-ENOMEM); > + } > + > + return &obj->ttm.base; > +} > + > +static void xe_display_bo_fbdev_destroy(struct drm_gem_object *obj) > +{ > + xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); > +} > + > +static int xe_display_bo_fbdev_fill_info(struct drm_gem_object *_obj, struct fb_info *info, > + struct i915_vma *vma) > +{ > + struct xe_bo *obj = gem_to_xe_bo(_obj); > + struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); > + > + if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { > + if (obj->flags & XE_BO_FLAG_STOLEN) > + info->fix.smem_start = xe_ttm_stolen_io_offset(obj, 0); > + else > + info->fix.smem_start = > + pci_resource_start(pdev, 2) + > + xe_bo_addr(obj, 0, XE_PAGE_SIZE); > + > + info->fix.smem_len = obj->ttm.base.size; > + } else { > + /* XXX: Pure fiction, as the BO may not be physically accessible.. */ > + info->fix.smem_start = 0; > + info->fix.smem_len = obj->ttm.base.size; > + } > + XE_WARN_ON(iosys_map_is_null(&obj->vmap)); > + > + info->screen_base = obj->vmap.vaddr_iomem; > + info->screen_size = obj->ttm.base.size; > + > + return 0; > +} > +#endif > + > const struct intel_display_bo_interface xe_display_bo_interface = { > .is_protected = xe_display_bo_is_protected, > .key_check = xe_pxp_obj_key_check, > @@ -109,4 +220,10 @@ const struct intel_display_bo_interface xe_display_bo_interface = { > .framebuffer_init = xe_display_bo_framebuffer_init, > .framebuffer_fini = xe_display_bo_framebuffer_fini, > .framebuffer_lookup = xe_display_bo_framebuffer_lookup, > +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) > + .fbdev_create = xe_display_bo_fbdev_create, > + .fbdev_destroy = xe_display_bo_fbdev_destroy, > + .fbdev_fill_info = xe_display_bo_fbdev_fill_info, > + .fbdev_pitch_align = xe_display_bo_fbdev_pitch_align, > +#endif > }; > diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.h b/drivers/gpu/drm/xe/display/xe_display_bo.h > index 6879c104b0b1..8980e6ecf54a 100644 > --- a/drivers/gpu/drm/xe/display/xe_display_bo.h > +++ b/drivers/gpu/drm/xe/display/xe_display_bo.h > @@ -4,6 +4,12 @@ > #ifndef __XE_DISPLAY_BO_H__ > #define __XE_DISPLAY_BO_H__ > > +#include <linux/types.h> > + > +struct drm_device; > + > +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); > + > extern const struct intel_display_bo_interface xe_display_bo_interface; > > #endif > diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c > index 730c6dc49522..6e0a22429184 100644 > --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c > +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c > @@ -12,8 +12,8 @@ > #include "intel_display_types.h" > #include "intel_fb.h" > #include "intel_fb_pin.h" > -#include "intel_fbdev_fb.h" > #include "xe_bo.h" > +#include "xe_display_bo.h" > #include "xe_display_vma.h" > #include "xe_ggtt.h" > #include "xe_mmio.h" > @@ -87,7 +87,7 @@ initial_plane_bo(struct xe_device *xe, > > if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && > IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && > - !intel_fbdev_fb_prefer_stolen(&xe->drm, plane_config->size)) { > + !xe_display_bo_fbdev_prefer_stolen(&xe->drm, plane_config->size)) { > drm_info(&xe->drm, "Initial FB size exceeds half of stolen, discarding\n"); > return NULL; > } > diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h > index 97ec94a2e749..2fc1794a3da4 100644 > --- a/include/drm/intel/display_parent_interface.h > +++ b/include/drm/intel/display_parent_interface.h > @@ -15,6 +15,7 @@ struct drm_gem_object; > struct drm_mode_fb_cmd2; > struct drm_plane_state; > struct drm_scanout_buffer; > +struct fb_info; > struct i915_vma; > struct intel_dpt; > struct intel_dsb_buffer; > @@ -43,6 +44,12 @@ struct intel_display_bo_interface { > struct drm_gem_object *(*framebuffer_lookup)(struct drm_device *drm, > struct drm_file *filp, > const struct drm_mode_fb_cmd2 *user_mode_cmd); > +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) > + struct drm_gem_object *(*fbdev_create)(struct drm_device *drm, int size); > + void (*fbdev_destroy)(struct drm_gem_object *obj); > + int (*fbdev_fill_info)(struct drm_gem_object *obj, struct fb_info *info, struct i915_vma *vma); > + u32 (*fbdev_pitch_align)(u32 stride); > +#endif > }; > > struct intel_display_dpt_interface { > -- > 2.47.3 > > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/5] drm/{i915,xe}: move fbdev fb calls to parent interface 2026-03-24 23:42 ` Michał Grzelak @ 2026-03-24 23:51 ` Michał Grzelak 2026-03-25 8:13 ` [PATCH 3/5] drm/{i915, xe}: " Jani Nikula 1 sibling, 0 replies; 16+ messages in thread From: Michał Grzelak @ 2026-03-24 23:51 UTC (permalink / raw) To: Michał Grzelak Cc: Jani Nikula, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org [-- Attachment #1: Type: text/plain, Size: 30357 bytes --] On Tue, 24 Mar 2026, Michał Grzelak wrote: > On Wed, 18 Mar 2026, Jani Nikula wrote: >> Move the driver specific fbdev fb calls to the display parent >> interface. Reuse the existing struct intel_display_bo_interface, as this >> is mostly about gem objects. >> >> Put everything behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) to catch >> configuration issues at build or link time. >> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com> >> --- >> drivers/gpu/drm/i915/Makefile | 3 +- >> drivers/gpu/drm/i915/display/intel_bo.c | 27 ++++ >> drivers/gpu/drm/i915/display/intel_bo.h | 8 ++ >> drivers/gpu/drm/i915/display/intel_fbdev.c | 14 +-- >> drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 118 ------------------ >> drivers/gpu/drm/i915/display/intel_fbdev_fb.h | 24 ---- >> drivers/gpu/drm/i915/i915_bo.c | 116 +++++++++++++++++ >> drivers/gpu/drm/i915/i915_bo.h | 6 + >> drivers/gpu/drm/i915/i915_initial_plane.c | 4 +- >> drivers/gpu/drm/xe/Makefile | 1 - >> drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 116 ----------------- >> drivers/gpu/drm/xe/display/xe_display_bo.c | 117 +++++++++++++++++ >> drivers/gpu/drm/xe/display/xe_display_bo.h | 6 + >> drivers/gpu/drm/xe/display/xe_initial_plane.c | 4 +- >> include/drm/intel/display_parent_interface.h | 7 ++ >> 15 files changed, 299 insertions(+), 272 deletions(-) >> delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.c >> delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.h >> delete mode 100644 drivers/gpu/drm/xe/display/intel_fbdev_fb.c >> >> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile >> index be976a90c5a6..026614d74cc4 100644 >> --- a/drivers/gpu/drm/i915/Makefile >> +++ b/drivers/gpu/drm/i915/Makefile >> @@ -324,8 +324,7 @@ i915-$(CONFIG_ACPI) += \ >> display/intel_acpi.o \ >> display/intel_opregion.o >> i915-$(CONFIG_DRM_FBDEV_EMULATION) += \ >> - display/intel_fbdev.o \ >> - display/intel_fbdev_fb.o >> + display/intel_fbdev.o >> i915-$(CONFIG_DEBUG_FS) += \ >> display/intel_display_debugfs.o \ >> display/intel_display_debugfs_params.o \ >> diff --git a/drivers/gpu/drm/i915/display/intel_bo.c >> b/drivers/gpu/drm/i915/display/intel_bo.c >> index 3b82d38a0504..8ecdbb7e39f3 100644 >> --- a/drivers/gpu/drm/i915/display/intel_bo.c >> +++ b/drivers/gpu/drm/i915/display/intel_bo.c >> @@ -85,3 +85,30 @@ struct drm_gem_object >> *intel_bo_framebuffer_lookup(struct intel_display *display >> { >> return display->parent->bo->framebuffer_lookup(display->drm, filp, >> user_mode_cmd); >> } >> + >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride) >> +{ >> + return display->parent->bo->fbdev_pitch_align(stride); >> +} >> + >> +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display >> *display, int size) >> +{ >> + return display->parent->bo->fbdev_create(display->drm, size); >> +} >> + >> +void intel_bo_fbdev_destroy(struct drm_gem_object *obj) >> +{ >> + struct intel_display *display = to_intel_display(obj->dev); >> + >> + display->parent->bo->fbdev_destroy(obj); >> +} >> + >> +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info >> *info, >> + struct i915_vma *vma) >> +{ >> + struct intel_display *display = to_intel_display(obj->dev); >> + >> + return display->parent->bo->fbdev_fill_info(obj, info, vma); >> +} >> +#endif >> diff --git a/drivers/gpu/drm/i915/display/intel_bo.h >> b/drivers/gpu/drm/i915/display/intel_bo.h >> index aec188c706c2..348f7fa66960 100644 >> --- a/drivers/gpu/drm/i915/display/intel_bo.h >> +++ b/drivers/gpu/drm/i915/display/intel_bo.h >> @@ -10,6 +10,8 @@ struct drm_file; >> struct drm_gem_object; >> struct drm_mode_fb_cmd2; >> struct drm_scanout_buffer; >> +struct fb_info; >> +struct i915_vma; >> struct intel_display; >> struct intel_framebuffer; >> struct seq_file; >> @@ -31,4 +33,10 @@ 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); >> >> +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride); >> +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display >> *display, int size); >> +void intel_bo_fbdev_destroy(struct drm_gem_object *obj); >> +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info >> *info, >> + struct i915_vma *vma); >> + >> #endif /* __INTEL_BO__ */ >> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c >> b/drivers/gpu/drm/i915/display/intel_fbdev.c >> index 6401aaaba199..14ac01c1b3eb 100644 >> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c >> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c >> @@ -54,7 +54,6 @@ >> #include "intel_fb.h" >> #include "intel_fb_pin.h" >> #include "intel_fbdev.h" >> -#include "intel_fbdev_fb.h" >> #include "intel_frontbuffer.h" >> >> struct intel_fbdev { >> @@ -204,7 +203,8 @@ static const struct drm_fb_helper_funcs >> intel_fb_helper_funcs = { >> .fb_set_suspend = intelfb_set_suspend, >> }; >> >> -static void intel_fbdev_fill_mode_cmd(struct drm_fb_helper_surface_size >> *sizes, >> +static void intel_fbdev_fill_mode_cmd(struct intel_display *display, >> + struct drm_fb_helper_surface_size >> *sizes, >> struct drm_mode_fb_cmd2 *mode_cmd) >> { >> /* we don't do packed 24bpp */ >> @@ -215,7 +215,7 @@ static void intel_fbdev_fill_mode_cmd(struct >> drm_fb_helper_surface_size *sizes, >> mode_cmd->width = sizes->surface_width; >> mode_cmd->height = sizes->surface_height; >> >> - mode_cmd->pitches[0] = intel_fbdev_fb_pitch_align(mode_cmd->width * >> DIV_ROUND_UP(sizes->surface_bpp, 8)); >> + mode_cmd->pitches[0] = intel_bo_fbdev_pitch_align(display, >> mode_cmd->width * DIV_ROUND_UP(sizes->surface_bpp, 8)); >> mode_cmd->pixel_format = >> drm_mode_legacy_fb_format(sizes->surface_bpp, >> sizes->surface_depth); >> mode_cmd->modifier[0] = DRM_FORMAT_MOD_LINEAR; >> @@ -230,12 +230,12 @@ __intel_fbdev_fb_alloc(struct intel_display *display, >> struct drm_gem_object *obj; >> int size; >> >> - intel_fbdev_fill_mode_cmd(sizes, &mode_cmd); >> + intel_fbdev_fill_mode_cmd(display, sizes, &mode_cmd); >> >> size = mode_cmd.pitches[0] * mode_cmd.height; >> size = PAGE_ALIGN(size); >> >> - obj = intel_fbdev_fb_bo_create(display->drm, size); >> + obj = intel_bo_fbdev_create(display, size); >> if (IS_ERR(obj)) { >> fb = ERR_CAST(obj); >> goto err; >> @@ -247,7 +247,7 @@ __intel_fbdev_fb_alloc(struct intel_display *display, >> mode_cmd.modifier[0]), >> &mode_cmd); >> if (IS_ERR(fb)) { >> - intel_fbdev_fb_bo_destroy(obj); >> + intel_bo_fbdev_destroy(obj); >> goto err; >> } >> >> @@ -327,7 +327,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper >> *helper, >> >> obj = intel_fb_bo(&fb->base); >> >> - ret = intel_fbdev_fb_fill_info(obj, info, vma); >> + ret = intel_bo_fbdev_fill_info(obj, info, vma); >> if (ret) >> goto out_unpin; >> >> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c >> b/drivers/gpu/drm/i915/display/intel_fbdev_fb.c >> deleted file mode 100644 >> index a696ce42d10b..000000000000 >> --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c >> +++ /dev/null >> @@ -1,118 +0,0 @@ >> -/* SPDX-License-Identifier: MIT */ >> -/* >> - * Copyright © 2023 Intel Corporation >> - */ >> - >> -#include <linux/fb.h> >> - >> -#include <drm/drm_print.h> >> - >> -#include "gem/i915_gem_lmem.h" >> - >> -#include "i915_drv.h" >> -#include "intel_fbdev_fb.h" >> - >> -u32 intel_fbdev_fb_pitch_align(u32 stride) >> -{ >> - return ALIGN(stride, 64); >> -} >> - >> -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int >> size) >> -{ >> - struct drm_i915_private *i915 = to_i915(drm); >> - >> - /* Skip stolen on MTL as Wa_22018444074 mitigation. */ >> - if (IS_METEORLAKE(i915)) >> - return false; >> - >> - /* >> - * If the FB is too big, just don't use it since fbdev is not very >> - * important and we should probably use that space with FBC or other >> - * features. >> - */ >> - return i915->dsm.usable_size >= size * 2; >> -} >> - >> -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, >> int size) >> -{ >> - struct drm_i915_private *i915 = to_i915(drm); >> - struct drm_i915_gem_object *obj; >> - >> - obj = ERR_PTR(-ENODEV); >> - if (HAS_LMEM(i915)) { >> - obj = i915_gem_object_create_lmem(i915, size, >> - I915_BO_ALLOC_CONTIGUOUS | >> - I915_BO_ALLOC_USER); >> - } else { >> - if (intel_fbdev_fb_prefer_stolen(drm, size)) >> - obj = i915_gem_object_create_stolen(i915, size); >> - else >> - drm_info(drm, "Allocating fbdev: Stolen memory not >> preferred.\n"); >> - >> - if (IS_ERR(obj)) >> - obj = i915_gem_object_create_shmem(i915, size); >> - } >> - >> - if (IS_ERR(obj)) { >> - drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); >> - return ERR_PTR(-ENOMEM); >> - } >> - >> - return &obj->base; >> -} >> - >> -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) >> -{ >> - drm_gem_object_put(obj); >> -} >> - >> -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info >> *info, >> - struct i915_vma *vma) >> -{ >> - struct drm_i915_private *i915 = to_i915(_obj->dev); >> - struct drm_i915_gem_object *obj = to_intel_bo(_obj); >> - struct i915_gem_ww_ctx ww; >> - void __iomem *vaddr; >> - int ret; >> - >> - if (i915_gem_object_is_lmem(obj)) { >> - struct intel_memory_region *mem = obj->mm.region; >> - >> - /* Use fbdev's framebuffer from lmem for discrete */ >> - info->fix.smem_start = >> - (unsigned long)(mem->io.start + >> - i915_gem_object_get_dma_address(obj, >> 0) - >> - mem->region.start); >> - info->fix.smem_len = obj->base.size; >> - } else { >> - struct i915_ggtt *ggtt = to_gt(i915)->ggtt; >> - >> - /* Our framebuffer is the entirety of fbdev's system memory >> */ >> - info->fix.smem_start = >> - (unsigned long)(ggtt->gmadr.start + >> i915_ggtt_offset(vma)); >> - info->fix.smem_len = vma->size; >> - } >> - >> - for_i915_gem_ww(&ww, ret, false) { >> - ret = i915_gem_object_lock(vma->obj, &ww); >> - >> - if (ret) >> - continue; >> - >> - vaddr = i915_vma_pin_iomap(vma); >> - if (IS_ERR(vaddr)) { >> - drm_err(&i915->drm, >> - "Failed to remap framebuffer into virtual >> memory (%pe)\n", vaddr); >> - ret = PTR_ERR(vaddr); >> - continue; >> - } >> - } >> - >> - if (ret) >> - return ret; >> - >> - info->screen_base = vaddr; >> - info->screen_size = intel_bo_to_drm_bo(obj)->size; >> - >> - return 0; >> -} >> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h >> b/drivers/gpu/drm/i915/display/intel_fbdev_fb.h >> deleted file mode 100644 >> index ddba45e9839d..000000000000 >> --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h >> +++ /dev/null >> @@ -1,24 +0,0 @@ >> -/* SPDX-License-Identifier: MIT */ >> -/* >> - * Copyright © 2023 Intel Corporation >> - */ >> - >> -#ifndef __INTEL_FBDEV_FB_H__ >> -#define __INTEL_FBDEV_FB_H__ >> - >> -#include <linux/types.h> >> - >> -struct drm_device; >> -struct drm_gem_object; >> -struct drm_mode_fb_cmd2; >> -struct fb_info; >> -struct i915_vma; >> - >> -u32 intel_fbdev_fb_pitch_align(u32 stride); >> -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, >> int size); >> -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj); >> -int intel_fbdev_fb_fill_info(struct drm_gem_object *obj, struct fb_info >> *info, >> - struct i915_vma *vma); >> -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int >> size); >> - >> -#endif >> diff --git a/drivers/gpu/drm/i915/i915_bo.c >> b/drivers/gpu/drm/i915/i915_bo.c >> index 1789f7cab05c..7e38d002478e 100644 >> --- a/drivers/gpu/drm/i915/i915_bo.c >> +++ b/drivers/gpu/drm/i915/i915_bo.c >> @@ -1,11 +1,14 @@ >> // SPDX-License-Identifier: MIT >> /* Copyright © 2024 Intel Corporation */ >> >> +#include <linux/fb.h> >> + >> #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_lmem.h" >> #include "gem/i915_gem_mman.h" >> #include "gem/i915_gem_object.h" >> #include "gem/i915_gem_object_frontbuffer.h" >> @@ -141,6 +144,113 @@ i915_bo_framebuffer_lookup(struct drm_device *drm, >> return intel_bo_to_drm_bo(obj); >> } >> >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> +static u32 i915_bo_fbdev_pitch_align(u32 stride) >> +{ >> + return ALIGN(stride, 64); >> +} >> + >> +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int >> size) >> +{ >> + struct drm_i915_private *i915 = to_i915(drm); >> + >> + /* Skip stolen on MTL as Wa_22018444074 mitigation. */ >> + if (IS_METEORLAKE(i915)) >> + return false; >> + >> + /* >> + * If the FB is too big, just don't use it since fbdev is not very >> + * important and we should probably use that space with FBC or other >> + * features. >> + */ >> + return i915->dsm.usable_size >= size * 2; >> +} >> + >> +static struct drm_gem_object *i915_bo_fbdev_create(struct drm_device *drm, >> int size) >> +{ >> + struct drm_i915_private *i915 = to_i915(drm); > > Can we add same trick for i915_bo_fbdev_create() as we are doing > with i915_bo_fbdev_prefer_stolen() in patch [4/5]? Or e.g. add a > separate 6th patch for that? Up to patch reordering, of course. > >> + struct drm_i915_gem_object *obj; >> + >> + obj = ERR_PTR(-ENODEV); >> + if (HAS_LMEM(i915)) { >> + obj = i915_gem_object_create_lmem(i915, size, >> + I915_BO_ALLOC_CONTIGUOUS | >> + I915_BO_ALLOC_USER); >> + } else { >> + if (i915_bo_fbdev_prefer_stolen(drm, size)) >> + obj = i915_gem_object_create_stolen(i915, size); >> + else >> + drm_info(drm, "Allocating fbdev: Stolen memory not >> preferred.\n"); >> + >> + if (IS_ERR(obj)) >> + obj = i915_gem_object_create_shmem(i915, size); >> + } >> + >> + if (IS_ERR(obj)) { >> + drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); >> + return ERR_PTR(-ENOMEM); >> + } >> + >> + return &obj->base; >> +} >> + >> +static void i915_bo_fbdev_destroy(struct drm_gem_object *obj) >> +{ >> + drm_gem_object_put(obj); >> +} >> + >> +static int i915_bo_fbdev_fill_info(struct drm_gem_object *_obj, struct >> fb_info *info, >> + struct i915_vma *vma) >> +{ >> + struct drm_i915_private *i915 = to_i915(_obj->dev); >> + struct drm_i915_gem_object *obj = to_intel_bo(_obj); >> + struct i915_gem_ww_ctx ww; >> + void __iomem *vaddr; >> + int ret; >> + >> + if (i915_gem_object_is_lmem(obj)) { >> + struct intel_memory_region *mem = obj->mm.region; >> + >> + /* Use fbdev's framebuffer from lmem for discrete */ >> + info->fix.smem_start = >> + (unsigned long)(mem->io.start + >> + i915_gem_object_get_dma_address(obj, >> 0) - >> + mem->region.start); >> + info->fix.smem_len = obj->base.size; >> + } else { >> + struct i915_ggtt *ggtt = to_gt(i915)->ggtt; >> + >> + /* Our framebuffer is the entirety of fbdev's system memory >> */ >> + info->fix.smem_start = >> + (unsigned long)(ggtt->gmadr.start + >> i915_ggtt_offset(vma)); >> + info->fix.smem_len = vma->size; >> + } >> + >> + for_i915_gem_ww(&ww, ret, false) { >> + ret = i915_gem_object_lock(vma->obj, &ww); >> + >> + if (ret) >> + continue; >> + >> + vaddr = i915_vma_pin_iomap(vma); >> + if (IS_ERR(vaddr)) { >> + drm_err(&i915->drm, >> + "Failed to remap framebuffer into virtual >> memory (%pe)\n", vaddr); >> + ret = PTR_ERR(vaddr); >> + continue; >> + } >> + } >> + >> + if (ret) >> + return ret; >> + >> + info->screen_base = vaddr; >> + info->screen_size = intel_bo_to_drm_bo(obj)->size; >> + >> + return 0; >> +} >> +#endif >> + >> const struct intel_display_bo_interface i915_display_bo_interface = { >> .is_tiled = i915_bo_is_tiled, >> .is_userptr = i915_bo_is_userptr, >> @@ -153,4 +263,10 @@ const struct intel_display_bo_interface >> i915_display_bo_interface = { >> .framebuffer_init = i915_bo_framebuffer_init, >> .framebuffer_fini = i915_bo_framebuffer_fini, >> .framebuffer_lookup = i915_bo_framebuffer_lookup, >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> + .fbdev_create = i915_bo_fbdev_create, >> + .fbdev_destroy = i915_bo_fbdev_destroy, >> + .fbdev_fill_info = i915_bo_fbdev_fill_info, >> + .fbdev_pitch_align = i915_bo_fbdev_pitch_align, >> +#endif >> }; >> diff --git a/drivers/gpu/drm/i915/i915_bo.h >> b/drivers/gpu/drm/i915/i915_bo.h >> index 57255d052dd9..2a0f3050dd42 100644 >> --- a/drivers/gpu/drm/i915/i915_bo.h >> +++ b/drivers/gpu/drm/i915/i915_bo.h >> @@ -4,6 +4,12 @@ >> #ifndef __I915_BO_H__ >> #define __I915_BO_H__ >> >> +#include <linux/types.h> >> + >> +struct drm_device; >> + >> +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int >> size); >> + >> extern const struct intel_display_bo_interface i915_display_bo_interface; >> >> #endif /* __I915_BO_H__ */ >> diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c >> b/drivers/gpu/drm/i915/i915_initial_plane.c >> index 390a9248d631..f4d631a395d0 100644 >> --- a/drivers/gpu/drm/i915/i915_initial_plane.c >> +++ b/drivers/gpu/drm/i915/i915_initial_plane.c >> @@ -9,10 +9,10 @@ >> #include "display/intel_crtc.h" >> #include "display/intel_display_types.h" >> #include "display/intel_fb.h" >> -#include "display/intel_fbdev_fb.h" >> #include "gem/i915_gem_lmem.h" >> #include "gem/i915_gem_region.h" >> >> +#include "i915_bo.h" >> #include "i915_drv.h" >> #include "i915_initial_plane.h" >> >> @@ -118,7 +118,7 @@ initial_plane_vma(struct drm_i915_private *i915, >> if (IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && >> IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && >> mem == i915->mm.stolen_region && >> - !intel_fbdev_fb_prefer_stolen(&i915->drm, size)) { >> + !i915_bo_fbdev_prefer_stolen(&i915->drm, size)) { >> drm_dbg_kms(&i915->drm, "Initial FB size exceeds half of >> stolen, discarding\n"); >> return NULL; >> } >> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile >> index dab979287a96..936eb79e9269 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_fbdev_fb.o \ >> display/xe_display.o \ >> display/xe_display_bo.o \ >> display/xe_display_pcode.o \ >> diff --git a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c >> b/drivers/gpu/drm/xe/display/intel_fbdev_fb.c >> deleted file mode 100644 >> index 2ad5e5a79287..000000000000 >> --- a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c >> +++ /dev/null >> @@ -1,116 +0,0 @@ >> -/* SPDX-License-Identifier: MIT */ >> -/* >> - * Copyright © 2023 Intel Corporation >> - */ >> - >> -#include <linux/fb.h> >> - >> -#include "intel_fbdev_fb.h" >> -#include "xe_bo.h" >> -#include "xe_ttm_stolen_mgr.h" >> -#include "xe_wa.h" >> - >> -#include <generated/xe_device_wa_oob.h> >> - >> -/* >> - * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride >> - * alignment. The same 64 as i915 uses should be fine, and we shouldn't >> need to >> - * have driver specific values. However, dropping the stride alignment to >> 64 >> - * leads to underflowing the bo pin count in the atomic cleanup work. >> - */ >> -u32 intel_fbdev_fb_pitch_align(u32 stride) >> -{ >> - return ALIGN(stride, XE_PAGE_SIZE); >> -} >> - >> -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int >> size) >> -{ >> - struct xe_device *xe = to_xe_device(drm); >> - struct ttm_resource_manager *stolen; >> - >> - stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); >> - if (!stolen) >> - return false; >> - >> - if (IS_DGFX(xe)) >> - return false; >> - >> - if (XE_DEVICE_WA(xe, 22019338487_display)) >> - return false; >> - >> - /* >> - * If the FB is too big, just don't use it since fbdev is not very >> - * important and we should probably use that space with FBC or other >> - * features. >> - */ >> - return stolen->size >= size * 2; >> -} >> - >> -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, >> int size) >> -{ >> - struct xe_device *xe = to_xe_device(drm); >> - struct xe_bo *obj; >> - >> - obj = ERR_PTR(-ENODEV); >> - >> - if (intel_fbdev_fb_prefer_stolen(drm, size)) { >> - obj = xe_bo_create_pin_map_novm(xe, >> xe_device_get_root_tile(xe), >> - size, >> - ttm_bo_type_kernel, >> XE_BO_FLAG_SCANOUT | >> - XE_BO_FLAG_STOLEN | >> - XE_BO_FLAG_GGTT, false); >> - if (!IS_ERR(obj)) >> - drm_info(&xe->drm, "Allocated fbdev into stolen\n"); >> - else >> - drm_info(&xe->drm, "Allocated fbdev into stolen >> failed: %li\n", PTR_ERR(obj)); >> - } else { >> - drm_info(&xe->drm, "Allocating fbdev: Stolen memory not >> preferred.\n"); >> - } >> - >> - if (IS_ERR(obj)) { >> - obj = xe_bo_create_pin_map_novm(xe, >> xe_device_get_root_tile(xe), size, >> - ttm_bo_type_kernel, >> XE_BO_FLAG_SCANOUT | >> - >> XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | >> - XE_BO_FLAG_GGTT, false); >> - } >> - >> - if (IS_ERR(obj)) { >> - drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", >> obj); >> - return ERR_PTR(-ENOMEM); >> - } >> - >> - return &obj->ttm.base; >> -} >> - >> -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) >> -{ >> - xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); >> -} >> - >> -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info >> *info, >> - struct i915_vma *vma) >> -{ >> - struct xe_bo *obj = gem_to_xe_bo(_obj); >> - struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); >> - >> - if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { >> - if (obj->flags & XE_BO_FLAG_STOLEN) >> - info->fix.smem_start = xe_ttm_stolen_io_offset(obj, >> 0); >> - else >> - info->fix.smem_start = >> - pci_resource_start(pdev, 2) + >> - xe_bo_addr(obj, 0, XE_PAGE_SIZE); >> - >> - info->fix.smem_len = obj->ttm.base.size; >> - } else { >> - /* XXX: Pure fiction, as the BO may not be physically >> accessible.. */ >> - info->fix.smem_start = 0; >> - info->fix.smem_len = obj->ttm.base.size; >> - } >> - XE_WARN_ON(iosys_map_is_null(&obj->vmap)); >> - >> - info->screen_base = obj->vmap.vaddr_iomem; >> - info->screen_size = obj->ttm.base.size; >> - >> - return 0; >> -} >> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c >> b/drivers/gpu/drm/xe/display/xe_display_bo.c >> index a689f71e7b14..10436edecc35 100644 >> --- a/drivers/gpu/drm/xe/display/xe_display_bo.c >> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c >> @@ -1,6 +1,8 @@ >> // SPDX-License-Identifier: MIT >> /* Copyright © 2024 Intel Corporation */ >> >> +#include <linux/fb.h> >> + >> #include <drm/drm_gem.h> >> #include <drm/intel/display_parent_interface.h> >> >> @@ -8,6 +10,10 @@ >> #include "xe_bo.h" >> #include "xe_display_bo.h" >> #include "xe_pxp.h" >> +#include "xe_ttm_stolen_mgr.h" >> +#include "xe_wa.h" >> + >> +#include <generated/xe_device_wa_oob.h> >> >> static bool xe_display_bo_is_protected(struct drm_gem_object *obj) >> { >> @@ -101,6 +107,111 @@ xe_display_bo_framebuffer_lookup(struct drm_device >> *drm, >> return gem; >> } >> >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> +/* >> + * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride >> + * alignment. The same 64 as i915 uses should be fine, and we shouldn't >> need to >> + * have driver specific values. However, dropping the stride alignment to >> 64 >> + * leads to underflowing the bo pin count in the atomic cleanup work. >> + */ >> +static u32 xe_display_bo_fbdev_pitch_align(u32 stride) >> +{ >> + return ALIGN(stride, XE_PAGE_SIZE); >> +} >> + >> +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned >> int size) >> +{ >> + struct xe_device *xe = to_xe_device(drm); >> + struct ttm_resource_manager *stolen; >> + >> + stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); >> + if (!stolen) >> + return false; >> + >> + if (IS_DGFX(xe)) >> + return false; >> + >> + if (XE_DEVICE_WA(xe, 22019338487_display)) >> + return false; >> + >> + /* >> + * If the FB is too big, just don't use it since fbdev is not very >> + * important and we should probably use that space with FBC or other >> + * features. >> + */ >> + return stolen->size >= size * 2; >> +} >> + >> +static struct drm_gem_object *xe_display_bo_fbdev_create(struct drm_device >> *drm, int size) >> +{ >> + struct xe_device *xe = to_xe_device(drm); > > Same question here, but adding it in patch [5/5] or as new 7th patch. Up > to patch reordering of course. > Please append my original message by: Reviewed-by: Michał Grzelak <michal.grzelak@intel.com> BR, Michał >> + struct xe_bo *obj; >> + >> + obj = ERR_PTR(-ENODEV); >> + >> + if (xe_display_bo_fbdev_prefer_stolen(drm, size)) { >> + obj = xe_bo_create_pin_map_novm(xe, >> xe_device_get_root_tile(xe), >> + size, >> + ttm_bo_type_kernel, >> XE_BO_FLAG_SCANOUT | >> + XE_BO_FLAG_STOLEN | >> + XE_BO_FLAG_GGTT, false); >> + if (!IS_ERR(obj)) >> + drm_info(&xe->drm, "Allocated fbdev into stolen\n"); >> + else >> + drm_info(&xe->drm, "Allocated fbdev into stolen >> failed: %li\n", PTR_ERR(obj)); >> + } else { >> + drm_info(&xe->drm, "Allocating fbdev: Stolen memory not >> preferred.\n"); >> + } >> + >> + if (IS_ERR(obj)) { >> + obj = xe_bo_create_pin_map_novm(xe, >> xe_device_get_root_tile(xe), size, >> + ttm_bo_type_kernel, >> XE_BO_FLAG_SCANOUT | >> + >> XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | >> + XE_BO_FLAG_GGTT, false); >> + } >> + >> + if (IS_ERR(obj)) { >> + drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", >> obj); >> + return ERR_PTR(-ENOMEM); >> + } >> + >> + return &obj->ttm.base; >> +} >> + >> +static void xe_display_bo_fbdev_destroy(struct drm_gem_object *obj) >> +{ >> + xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); >> +} >> + >> +static int xe_display_bo_fbdev_fill_info(struct drm_gem_object *_obj, >> struct fb_info *info, >> + struct i915_vma *vma) >> +{ >> + struct xe_bo *obj = gem_to_xe_bo(_obj); >> + struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); >> + >> + if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { >> + if (obj->flags & XE_BO_FLAG_STOLEN) >> + info->fix.smem_start = xe_ttm_stolen_io_offset(obj, >> 0); >> + else >> + info->fix.smem_start = >> + pci_resource_start(pdev, 2) + >> + xe_bo_addr(obj, 0, XE_PAGE_SIZE); >> + >> + info->fix.smem_len = obj->ttm.base.size; >> + } else { >> + /* XXX: Pure fiction, as the BO may not be physically >> accessible.. */ >> + info->fix.smem_start = 0; >> + info->fix.smem_len = obj->ttm.base.size; >> + } >> + XE_WARN_ON(iosys_map_is_null(&obj->vmap)); >> + >> + info->screen_base = obj->vmap.vaddr_iomem; >> + info->screen_size = obj->ttm.base.size; >> + >> + return 0; >> +} >> +#endif >> + >> const struct intel_display_bo_interface xe_display_bo_interface = { >> .is_protected = xe_display_bo_is_protected, >> .key_check = xe_pxp_obj_key_check, >> @@ -109,4 +220,10 @@ const struct intel_display_bo_interface >> xe_display_bo_interface = { >> .framebuffer_init = xe_display_bo_framebuffer_init, >> .framebuffer_fini = xe_display_bo_framebuffer_fini, >> .framebuffer_lookup = xe_display_bo_framebuffer_lookup, >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> + .fbdev_create = xe_display_bo_fbdev_create, >> + .fbdev_destroy = xe_display_bo_fbdev_destroy, >> + .fbdev_fill_info = xe_display_bo_fbdev_fill_info, >> + .fbdev_pitch_align = xe_display_bo_fbdev_pitch_align, >> +#endif >> }; >> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.h >> b/drivers/gpu/drm/xe/display/xe_display_bo.h >> index 6879c104b0b1..8980e6ecf54a 100644 >> --- a/drivers/gpu/drm/xe/display/xe_display_bo.h >> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.h >> @@ -4,6 +4,12 @@ >> #ifndef __XE_DISPLAY_BO_H__ >> #define __XE_DISPLAY_BO_H__ >> >> +#include <linux/types.h> >> + >> +struct drm_device; >> + >> +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned >> int size); >> + >> extern const struct intel_display_bo_interface xe_display_bo_interface; >> >> #endif >> diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c >> b/drivers/gpu/drm/xe/display/xe_initial_plane.c >> index 730c6dc49522..6e0a22429184 100644 >> --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c >> +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c >> @@ -12,8 +12,8 @@ >> #include "intel_display_types.h" >> #include "intel_fb.h" >> #include "intel_fb_pin.h" >> -#include "intel_fbdev_fb.h" >> #include "xe_bo.h" >> +#include "xe_display_bo.h" >> #include "xe_display_vma.h" >> #include "xe_ggtt.h" >> #include "xe_mmio.h" >> @@ -87,7 +87,7 @@ initial_plane_bo(struct xe_device *xe, >> >> if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && >> IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && >> - !intel_fbdev_fb_prefer_stolen(&xe->drm, >> plane_config->size)) { >> + !xe_display_bo_fbdev_prefer_stolen(&xe->drm, >> plane_config->size)) { >> drm_info(&xe->drm, "Initial FB size exceeds half of >> stolen, discarding\n"); >> return NULL; >> } >> diff --git a/include/drm/intel/display_parent_interface.h >> b/include/drm/intel/display_parent_interface.h >> index 97ec94a2e749..2fc1794a3da4 100644 >> --- a/include/drm/intel/display_parent_interface.h >> +++ b/include/drm/intel/display_parent_interface.h >> @@ -15,6 +15,7 @@ struct drm_gem_object; >> struct drm_mode_fb_cmd2; >> struct drm_plane_state; >> struct drm_scanout_buffer; >> +struct fb_info; >> struct i915_vma; >> struct intel_dpt; >> struct intel_dsb_buffer; >> @@ -43,6 +44,12 @@ struct intel_display_bo_interface { >> struct drm_gem_object *(*framebuffer_lookup)(struct drm_device *drm, >> struct drm_file *filp, >> const struct >> drm_mode_fb_cmd2 *user_mode_cmd); >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> + struct drm_gem_object *(*fbdev_create)(struct drm_device *drm, int >> size); >> + void (*fbdev_destroy)(struct drm_gem_object *obj); >> + int (*fbdev_fill_info)(struct drm_gem_object *obj, struct fb_info >> *info, struct i915_vma *vma); >> + u32 (*fbdev_pitch_align)(u32 stride); >> +#endif >> }; >> >> struct intel_display_dpt_interface { >> -- >> 2.47.3 >> > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/5] drm/{i915, xe}: move fbdev fb calls to parent interface 2026-03-24 23:42 ` Michał Grzelak 2026-03-24 23:51 ` Michał Grzelak @ 2026-03-25 8:13 ` Jani Nikula 2026-03-25 9:32 ` [PATCH 3/5] drm/{i915,xe}: " Michał Grzelak 1 sibling, 1 reply; 16+ messages in thread From: Jani Nikula @ 2026-03-25 8:13 UTC (permalink / raw) To: Michał Grzelak Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org On Wed, 25 Mar 2026, Michał Grzelak <michal.grzelak@intel.com> wrote: > On Wed, 18 Mar 2026, Jani Nikula wrote: >> Move the driver specific fbdev fb calls to the display parent >> interface. Reuse the existing struct intel_display_bo_interface, as this >> is mostly about gem objects. >> >> Put everything behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) to catch >> configuration issues at build or link time. >> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com> >> --- >> drivers/gpu/drm/i915/Makefile | 3 +- >> drivers/gpu/drm/i915/display/intel_bo.c | 27 ++++ >> drivers/gpu/drm/i915/display/intel_bo.h | 8 ++ >> drivers/gpu/drm/i915/display/intel_fbdev.c | 14 +-- >> drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 118 ------------------ >> drivers/gpu/drm/i915/display/intel_fbdev_fb.h | 24 ---- >> drivers/gpu/drm/i915/i915_bo.c | 116 +++++++++++++++++ >> drivers/gpu/drm/i915/i915_bo.h | 6 + >> drivers/gpu/drm/i915/i915_initial_plane.c | 4 +- >> drivers/gpu/drm/xe/Makefile | 1 - >> drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 116 ----------------- >> drivers/gpu/drm/xe/display/xe_display_bo.c | 117 +++++++++++++++++ >> drivers/gpu/drm/xe/display/xe_display_bo.h | 6 + >> drivers/gpu/drm/xe/display/xe_initial_plane.c | 4 +- >> include/drm/intel/display_parent_interface.h | 7 ++ >> 15 files changed, 299 insertions(+), 272 deletions(-) >> delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.c >> delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.h >> delete mode 100644 drivers/gpu/drm/xe/display/intel_fbdev_fb.c >> >> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile >> index be976a90c5a6..026614d74cc4 100644 >> --- a/drivers/gpu/drm/i915/Makefile >> +++ b/drivers/gpu/drm/i915/Makefile >> @@ -324,8 +324,7 @@ i915-$(CONFIG_ACPI) += \ >> display/intel_acpi.o \ >> display/intel_opregion.o >> i915-$(CONFIG_DRM_FBDEV_EMULATION) += \ >> - display/intel_fbdev.o \ >> - display/intel_fbdev_fb.o >> + display/intel_fbdev.o >> i915-$(CONFIG_DEBUG_FS) += \ >> display/intel_display_debugfs.o \ >> display/intel_display_debugfs_params.o \ >> diff --git a/drivers/gpu/drm/i915/display/intel_bo.c b/drivers/gpu/drm/i915/display/intel_bo.c >> index 3b82d38a0504..8ecdbb7e39f3 100644 >> --- a/drivers/gpu/drm/i915/display/intel_bo.c >> +++ b/drivers/gpu/drm/i915/display/intel_bo.c >> @@ -85,3 +85,30 @@ struct drm_gem_object *intel_bo_framebuffer_lookup(struct intel_display *display >> { >> return display->parent->bo->framebuffer_lookup(display->drm, filp, user_mode_cmd); >> } >> + >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride) >> +{ >> + return display->parent->bo->fbdev_pitch_align(stride); >> +} >> + >> +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display *display, int size) >> +{ >> + return display->parent->bo->fbdev_create(display->drm, size); >> +} >> + >> +void intel_bo_fbdev_destroy(struct drm_gem_object *obj) >> +{ >> + struct intel_display *display = to_intel_display(obj->dev); >> + >> + display->parent->bo->fbdev_destroy(obj); >> +} >> + >> +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info *info, >> + struct i915_vma *vma) >> +{ >> + struct intel_display *display = to_intel_display(obj->dev); >> + >> + return display->parent->bo->fbdev_fill_info(obj, info, vma); >> +} >> +#endif >> diff --git a/drivers/gpu/drm/i915/display/intel_bo.h b/drivers/gpu/drm/i915/display/intel_bo.h >> index aec188c706c2..348f7fa66960 100644 >> --- a/drivers/gpu/drm/i915/display/intel_bo.h >> +++ b/drivers/gpu/drm/i915/display/intel_bo.h >> @@ -10,6 +10,8 @@ struct drm_file; >> struct drm_gem_object; >> struct drm_mode_fb_cmd2; >> struct drm_scanout_buffer; >> +struct fb_info; >> +struct i915_vma; >> struct intel_display; >> struct intel_framebuffer; >> struct seq_file; >> @@ -31,4 +33,10 @@ 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); >> >> +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride); >> +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display *display, int size); >> +void intel_bo_fbdev_destroy(struct drm_gem_object *obj); >> +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info *info, >> + struct i915_vma *vma); >> + >> #endif /* __INTEL_BO__ */ >> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c >> index 6401aaaba199..14ac01c1b3eb 100644 >> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c >> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c >> @@ -54,7 +54,6 @@ >> #include "intel_fb.h" >> #include "intel_fb_pin.h" >> #include "intel_fbdev.h" >> -#include "intel_fbdev_fb.h" >> #include "intel_frontbuffer.h" >> >> struct intel_fbdev { >> @@ -204,7 +203,8 @@ static const struct drm_fb_helper_funcs intel_fb_helper_funcs = { >> .fb_set_suspend = intelfb_set_suspend, >> }; >> >> -static void intel_fbdev_fill_mode_cmd(struct drm_fb_helper_surface_size *sizes, >> +static void intel_fbdev_fill_mode_cmd(struct intel_display *display, >> + struct drm_fb_helper_surface_size *sizes, >> struct drm_mode_fb_cmd2 *mode_cmd) >> { >> /* we don't do packed 24bpp */ >> @@ -215,7 +215,7 @@ static void intel_fbdev_fill_mode_cmd(struct drm_fb_helper_surface_size *sizes, >> mode_cmd->width = sizes->surface_width; >> mode_cmd->height = sizes->surface_height; >> >> - mode_cmd->pitches[0] = intel_fbdev_fb_pitch_align(mode_cmd->width * DIV_ROUND_UP(sizes->surface_bpp, 8)); >> + mode_cmd->pitches[0] = intel_bo_fbdev_pitch_align(display, mode_cmd->width * DIV_ROUND_UP(sizes->surface_bpp, 8)); >> mode_cmd->pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, >> sizes->surface_depth); >> mode_cmd->modifier[0] = DRM_FORMAT_MOD_LINEAR; >> @@ -230,12 +230,12 @@ __intel_fbdev_fb_alloc(struct intel_display *display, >> struct drm_gem_object *obj; >> int size; >> >> - intel_fbdev_fill_mode_cmd(sizes, &mode_cmd); >> + intel_fbdev_fill_mode_cmd(display, sizes, &mode_cmd); >> >> size = mode_cmd.pitches[0] * mode_cmd.height; >> size = PAGE_ALIGN(size); >> >> - obj = intel_fbdev_fb_bo_create(display->drm, size); >> + obj = intel_bo_fbdev_create(display, size); >> if (IS_ERR(obj)) { >> fb = ERR_CAST(obj); >> goto err; >> @@ -247,7 +247,7 @@ __intel_fbdev_fb_alloc(struct intel_display *display, >> mode_cmd.modifier[0]), >> &mode_cmd); >> if (IS_ERR(fb)) { >> - intel_fbdev_fb_bo_destroy(obj); >> + intel_bo_fbdev_destroy(obj); >> goto err; >> } >> >> @@ -327,7 +327,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, >> >> obj = intel_fb_bo(&fb->base); >> >> - ret = intel_fbdev_fb_fill_info(obj, info, vma); >> + ret = intel_bo_fbdev_fill_info(obj, info, vma); >> if (ret) >> goto out_unpin; >> >> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c b/drivers/gpu/drm/i915/display/intel_fbdev_fb.c >> deleted file mode 100644 >> index a696ce42d10b..000000000000 >> --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c >> +++ /dev/null >> @@ -1,118 +0,0 @@ >> -/* SPDX-License-Identifier: MIT */ >> -/* >> - * Copyright © 2023 Intel Corporation >> - */ >> - >> -#include <linux/fb.h> >> - >> -#include <drm/drm_print.h> >> - >> -#include "gem/i915_gem_lmem.h" >> - >> -#include "i915_drv.h" >> -#include "intel_fbdev_fb.h" >> - >> -u32 intel_fbdev_fb_pitch_align(u32 stride) >> -{ >> - return ALIGN(stride, 64); >> -} >> - >> -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size) >> -{ >> - struct drm_i915_private *i915 = to_i915(drm); >> - >> - /* Skip stolen on MTL as Wa_22018444074 mitigation. */ >> - if (IS_METEORLAKE(i915)) >> - return false; >> - >> - /* >> - * If the FB is too big, just don't use it since fbdev is not very >> - * important and we should probably use that space with FBC or other >> - * features. >> - */ >> - return i915->dsm.usable_size >= size * 2; >> -} >> - >> -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size) >> -{ >> - struct drm_i915_private *i915 = to_i915(drm); >> - struct drm_i915_gem_object *obj; >> - >> - obj = ERR_PTR(-ENODEV); >> - if (HAS_LMEM(i915)) { >> - obj = i915_gem_object_create_lmem(i915, size, >> - I915_BO_ALLOC_CONTIGUOUS | >> - I915_BO_ALLOC_USER); >> - } else { >> - if (intel_fbdev_fb_prefer_stolen(drm, size)) >> - obj = i915_gem_object_create_stolen(i915, size); >> - else >> - drm_info(drm, "Allocating fbdev: Stolen memory not preferred.\n"); >> - >> - if (IS_ERR(obj)) >> - obj = i915_gem_object_create_shmem(i915, size); >> - } >> - >> - if (IS_ERR(obj)) { >> - drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); >> - return ERR_PTR(-ENOMEM); >> - } >> - >> - return &obj->base; >> -} >> - >> -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) >> -{ >> - drm_gem_object_put(obj); >> -} >> - >> -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, >> - struct i915_vma *vma) >> -{ >> - struct drm_i915_private *i915 = to_i915(_obj->dev); >> - struct drm_i915_gem_object *obj = to_intel_bo(_obj); >> - struct i915_gem_ww_ctx ww; >> - void __iomem *vaddr; >> - int ret; >> - >> - if (i915_gem_object_is_lmem(obj)) { >> - struct intel_memory_region *mem = obj->mm.region; >> - >> - /* Use fbdev's framebuffer from lmem for discrete */ >> - info->fix.smem_start = >> - (unsigned long)(mem->io.start + >> - i915_gem_object_get_dma_address(obj, 0) - >> - mem->region.start); >> - info->fix.smem_len = obj->base.size; >> - } else { >> - struct i915_ggtt *ggtt = to_gt(i915)->ggtt; >> - >> - /* Our framebuffer is the entirety of fbdev's system memory */ >> - info->fix.smem_start = >> - (unsigned long)(ggtt->gmadr.start + i915_ggtt_offset(vma)); >> - info->fix.smem_len = vma->size; >> - } >> - >> - for_i915_gem_ww(&ww, ret, false) { >> - ret = i915_gem_object_lock(vma->obj, &ww); >> - >> - if (ret) >> - continue; >> - >> - vaddr = i915_vma_pin_iomap(vma); >> - if (IS_ERR(vaddr)) { >> - drm_err(&i915->drm, >> - "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); >> - ret = PTR_ERR(vaddr); >> - continue; >> - } >> - } >> - >> - if (ret) >> - return ret; >> - >> - info->screen_base = vaddr; >> - info->screen_size = intel_bo_to_drm_bo(obj)->size; >> - >> - return 0; >> -} >> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h b/drivers/gpu/drm/i915/display/intel_fbdev_fb.h >> deleted file mode 100644 >> index ddba45e9839d..000000000000 >> --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h >> +++ /dev/null >> @@ -1,24 +0,0 @@ >> -/* SPDX-License-Identifier: MIT */ >> -/* >> - * Copyright © 2023 Intel Corporation >> - */ >> - >> -#ifndef __INTEL_FBDEV_FB_H__ >> -#define __INTEL_FBDEV_FB_H__ >> - >> -#include <linux/types.h> >> - >> -struct drm_device; >> -struct drm_gem_object; >> -struct drm_mode_fb_cmd2; >> -struct fb_info; >> -struct i915_vma; >> - >> -u32 intel_fbdev_fb_pitch_align(u32 stride); >> -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size); >> -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj); >> -int intel_fbdev_fb_fill_info(struct drm_gem_object *obj, struct fb_info *info, >> - struct i915_vma *vma); >> -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size); >> - >> -#endif >> diff --git a/drivers/gpu/drm/i915/i915_bo.c b/drivers/gpu/drm/i915/i915_bo.c >> index 1789f7cab05c..7e38d002478e 100644 >> --- a/drivers/gpu/drm/i915/i915_bo.c >> +++ b/drivers/gpu/drm/i915/i915_bo.c >> @@ -1,11 +1,14 @@ >> // SPDX-License-Identifier: MIT >> /* Copyright © 2024 Intel Corporation */ >> >> +#include <linux/fb.h> >> + >> #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_lmem.h" >> #include "gem/i915_gem_mman.h" >> #include "gem/i915_gem_object.h" >> #include "gem/i915_gem_object_frontbuffer.h" >> @@ -141,6 +144,113 @@ i915_bo_framebuffer_lookup(struct drm_device *drm, >> return intel_bo_to_drm_bo(obj); >> } >> >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> +static u32 i915_bo_fbdev_pitch_align(u32 stride) >> +{ >> + return ALIGN(stride, 64); >> +} >> + >> +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) >> +{ >> + struct drm_i915_private *i915 = to_i915(drm); >> + >> + /* Skip stolen on MTL as Wa_22018444074 mitigation. */ >> + if (IS_METEORLAKE(i915)) >> + return false; >> + >> + /* >> + * If the FB is too big, just don't use it since fbdev is not very >> + * important and we should probably use that space with FBC or other >> + * features. >> + */ >> + return i915->dsm.usable_size >= size * 2; >> +} >> + >> +static struct drm_gem_object *i915_bo_fbdev_create(struct drm_device *drm, int size) >> +{ >> + struct drm_i915_private *i915 = to_i915(drm); > > Can we add same trick for i915_bo_fbdev_create() as we are doing > with i915_bo_fbdev_prefer_stolen() in patch [4/5]? Or e.g. add a > separate 6th patch for that? Up to patch reordering, of course. I don't know what you mean. BR, Jani. > >> + struct drm_i915_gem_object *obj; >> + >> + obj = ERR_PTR(-ENODEV); >> + if (HAS_LMEM(i915)) { >> + obj = i915_gem_object_create_lmem(i915, size, >> + I915_BO_ALLOC_CONTIGUOUS | >> + I915_BO_ALLOC_USER); >> + } else { >> + if (i915_bo_fbdev_prefer_stolen(drm, size)) >> + obj = i915_gem_object_create_stolen(i915, size); >> + else >> + drm_info(drm, "Allocating fbdev: Stolen memory not preferred.\n"); >> + >> + if (IS_ERR(obj)) >> + obj = i915_gem_object_create_shmem(i915, size); >> + } >> + >> + if (IS_ERR(obj)) { >> + drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); >> + return ERR_PTR(-ENOMEM); >> + } >> + >> + return &obj->base; >> +} >> + >> +static void i915_bo_fbdev_destroy(struct drm_gem_object *obj) >> +{ >> + drm_gem_object_put(obj); >> +} >> + >> +static int i915_bo_fbdev_fill_info(struct drm_gem_object *_obj, struct fb_info *info, >> + struct i915_vma *vma) >> +{ >> + struct drm_i915_private *i915 = to_i915(_obj->dev); >> + struct drm_i915_gem_object *obj = to_intel_bo(_obj); >> + struct i915_gem_ww_ctx ww; >> + void __iomem *vaddr; >> + int ret; >> + >> + if (i915_gem_object_is_lmem(obj)) { >> + struct intel_memory_region *mem = obj->mm.region; >> + >> + /* Use fbdev's framebuffer from lmem for discrete */ >> + info->fix.smem_start = >> + (unsigned long)(mem->io.start + >> + i915_gem_object_get_dma_address(obj, 0) - >> + mem->region.start); >> + info->fix.smem_len = obj->base.size; >> + } else { >> + struct i915_ggtt *ggtt = to_gt(i915)->ggtt; >> + >> + /* Our framebuffer is the entirety of fbdev's system memory */ >> + info->fix.smem_start = >> + (unsigned long)(ggtt->gmadr.start + i915_ggtt_offset(vma)); >> + info->fix.smem_len = vma->size; >> + } >> + >> + for_i915_gem_ww(&ww, ret, false) { >> + ret = i915_gem_object_lock(vma->obj, &ww); >> + >> + if (ret) >> + continue; >> + >> + vaddr = i915_vma_pin_iomap(vma); >> + if (IS_ERR(vaddr)) { >> + drm_err(&i915->drm, >> + "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); >> + ret = PTR_ERR(vaddr); >> + continue; >> + } >> + } >> + >> + if (ret) >> + return ret; >> + >> + info->screen_base = vaddr; >> + info->screen_size = intel_bo_to_drm_bo(obj)->size; >> + >> + return 0; >> +} >> +#endif >> + >> const struct intel_display_bo_interface i915_display_bo_interface = { >> .is_tiled = i915_bo_is_tiled, >> .is_userptr = i915_bo_is_userptr, >> @@ -153,4 +263,10 @@ const struct intel_display_bo_interface i915_display_bo_interface = { >> .framebuffer_init = i915_bo_framebuffer_init, >> .framebuffer_fini = i915_bo_framebuffer_fini, >> .framebuffer_lookup = i915_bo_framebuffer_lookup, >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> + .fbdev_create = i915_bo_fbdev_create, >> + .fbdev_destroy = i915_bo_fbdev_destroy, >> + .fbdev_fill_info = i915_bo_fbdev_fill_info, >> + .fbdev_pitch_align = i915_bo_fbdev_pitch_align, >> +#endif >> }; >> diff --git a/drivers/gpu/drm/i915/i915_bo.h b/drivers/gpu/drm/i915/i915_bo.h >> index 57255d052dd9..2a0f3050dd42 100644 >> --- a/drivers/gpu/drm/i915/i915_bo.h >> +++ b/drivers/gpu/drm/i915/i915_bo.h >> @@ -4,6 +4,12 @@ >> #ifndef __I915_BO_H__ >> #define __I915_BO_H__ >> >> +#include <linux/types.h> >> + >> +struct drm_device; >> + >> +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); >> + >> extern const struct intel_display_bo_interface i915_display_bo_interface; >> >> #endif /* __I915_BO_H__ */ >> diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c b/drivers/gpu/drm/i915/i915_initial_plane.c >> index 390a9248d631..f4d631a395d0 100644 >> --- a/drivers/gpu/drm/i915/i915_initial_plane.c >> +++ b/drivers/gpu/drm/i915/i915_initial_plane.c >> @@ -9,10 +9,10 @@ >> #include "display/intel_crtc.h" >> #include "display/intel_display_types.h" >> #include "display/intel_fb.h" >> -#include "display/intel_fbdev_fb.h" >> #include "gem/i915_gem_lmem.h" >> #include "gem/i915_gem_region.h" >> >> +#include "i915_bo.h" >> #include "i915_drv.h" >> #include "i915_initial_plane.h" >> >> @@ -118,7 +118,7 @@ initial_plane_vma(struct drm_i915_private *i915, >> if (IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && >> IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && >> mem == i915->mm.stolen_region && >> - !intel_fbdev_fb_prefer_stolen(&i915->drm, size)) { >> + !i915_bo_fbdev_prefer_stolen(&i915->drm, size)) { >> drm_dbg_kms(&i915->drm, "Initial FB size exceeds half of stolen, discarding\n"); >> return NULL; >> } >> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile >> index dab979287a96..936eb79e9269 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_fbdev_fb.o \ >> display/xe_display.o \ >> display/xe_display_bo.o \ >> display/xe_display_pcode.o \ >> diff --git a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c b/drivers/gpu/drm/xe/display/intel_fbdev_fb.c >> deleted file mode 100644 >> index 2ad5e5a79287..000000000000 >> --- a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c >> +++ /dev/null >> @@ -1,116 +0,0 @@ >> -/* SPDX-License-Identifier: MIT */ >> -/* >> - * Copyright © 2023 Intel Corporation >> - */ >> - >> -#include <linux/fb.h> >> - >> -#include "intel_fbdev_fb.h" >> -#include "xe_bo.h" >> -#include "xe_ttm_stolen_mgr.h" >> -#include "xe_wa.h" >> - >> -#include <generated/xe_device_wa_oob.h> >> - >> -/* >> - * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride >> - * alignment. The same 64 as i915 uses should be fine, and we shouldn't need to >> - * have driver specific values. However, dropping the stride alignment to 64 >> - * leads to underflowing the bo pin count in the atomic cleanup work. >> - */ >> -u32 intel_fbdev_fb_pitch_align(u32 stride) >> -{ >> - return ALIGN(stride, XE_PAGE_SIZE); >> -} >> - >> -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size) >> -{ >> - struct xe_device *xe = to_xe_device(drm); >> - struct ttm_resource_manager *stolen; >> - >> - stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); >> - if (!stolen) >> - return false; >> - >> - if (IS_DGFX(xe)) >> - return false; >> - >> - if (XE_DEVICE_WA(xe, 22019338487_display)) >> - return false; >> - >> - /* >> - * If the FB is too big, just don't use it since fbdev is not very >> - * important and we should probably use that space with FBC or other >> - * features. >> - */ >> - return stolen->size >= size * 2; >> -} >> - >> -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size) >> -{ >> - struct xe_device *xe = to_xe_device(drm); >> - struct xe_bo *obj; >> - >> - obj = ERR_PTR(-ENODEV); >> - >> - if (intel_fbdev_fb_prefer_stolen(drm, size)) { >> - obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), >> - size, >> - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | >> - XE_BO_FLAG_STOLEN | >> - XE_BO_FLAG_GGTT, false); >> - if (!IS_ERR(obj)) >> - drm_info(&xe->drm, "Allocated fbdev into stolen\n"); >> - else >> - drm_info(&xe->drm, "Allocated fbdev into stolen failed: %li\n", PTR_ERR(obj)); >> - } else { >> - drm_info(&xe->drm, "Allocating fbdev: Stolen memory not preferred.\n"); >> - } >> - >> - if (IS_ERR(obj)) { >> - obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, >> - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | >> - XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | >> - XE_BO_FLAG_GGTT, false); >> - } >> - >> - if (IS_ERR(obj)) { >> - drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", obj); >> - return ERR_PTR(-ENOMEM); >> - } >> - >> - return &obj->ttm.base; >> -} >> - >> -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) >> -{ >> - xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); >> -} >> - >> -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, >> - struct i915_vma *vma) >> -{ >> - struct xe_bo *obj = gem_to_xe_bo(_obj); >> - struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); >> - >> - if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { >> - if (obj->flags & XE_BO_FLAG_STOLEN) >> - info->fix.smem_start = xe_ttm_stolen_io_offset(obj, 0); >> - else >> - info->fix.smem_start = >> - pci_resource_start(pdev, 2) + >> - xe_bo_addr(obj, 0, XE_PAGE_SIZE); >> - >> - info->fix.smem_len = obj->ttm.base.size; >> - } else { >> - /* XXX: Pure fiction, as the BO may not be physically accessible.. */ >> - info->fix.smem_start = 0; >> - info->fix.smem_len = obj->ttm.base.size; >> - } >> - XE_WARN_ON(iosys_map_is_null(&obj->vmap)); >> - >> - info->screen_base = obj->vmap.vaddr_iomem; >> - info->screen_size = obj->ttm.base.size; >> - >> - return 0; >> -} >> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c b/drivers/gpu/drm/xe/display/xe_display_bo.c >> index a689f71e7b14..10436edecc35 100644 >> --- a/drivers/gpu/drm/xe/display/xe_display_bo.c >> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c >> @@ -1,6 +1,8 @@ >> // SPDX-License-Identifier: MIT >> /* Copyright © 2024 Intel Corporation */ >> >> +#include <linux/fb.h> >> + >> #include <drm/drm_gem.h> >> #include <drm/intel/display_parent_interface.h> >> >> @@ -8,6 +10,10 @@ >> #include "xe_bo.h" >> #include "xe_display_bo.h" >> #include "xe_pxp.h" >> +#include "xe_ttm_stolen_mgr.h" >> +#include "xe_wa.h" >> + >> +#include <generated/xe_device_wa_oob.h> >> >> static bool xe_display_bo_is_protected(struct drm_gem_object *obj) >> { >> @@ -101,6 +107,111 @@ xe_display_bo_framebuffer_lookup(struct drm_device *drm, >> return gem; >> } >> >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> +/* >> + * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride >> + * alignment. The same 64 as i915 uses should be fine, and we shouldn't need to >> + * have driver specific values. However, dropping the stride alignment to 64 >> + * leads to underflowing the bo pin count in the atomic cleanup work. >> + */ >> +static u32 xe_display_bo_fbdev_pitch_align(u32 stride) >> +{ >> + return ALIGN(stride, XE_PAGE_SIZE); >> +} >> + >> +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) >> +{ >> + struct xe_device *xe = to_xe_device(drm); >> + struct ttm_resource_manager *stolen; >> + >> + stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); >> + if (!stolen) >> + return false; >> + >> + if (IS_DGFX(xe)) >> + return false; >> + >> + if (XE_DEVICE_WA(xe, 22019338487_display)) >> + return false; >> + >> + /* >> + * If the FB is too big, just don't use it since fbdev is not very >> + * important and we should probably use that space with FBC or other >> + * features. >> + */ >> + return stolen->size >= size * 2; >> +} >> + >> +static struct drm_gem_object *xe_display_bo_fbdev_create(struct drm_device *drm, int size) >> +{ >> + struct xe_device *xe = to_xe_device(drm); > > Same question here, but adding it in patch [5/5] or as new 7th patch. Up > to patch reordering of course. > > BR, > Michał > >> + struct xe_bo *obj; >> + >> + obj = ERR_PTR(-ENODEV); >> + >> + if (xe_display_bo_fbdev_prefer_stolen(drm, size)) { >> + obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), >> + size, >> + ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | >> + XE_BO_FLAG_STOLEN | >> + XE_BO_FLAG_GGTT, false); >> + if (!IS_ERR(obj)) >> + drm_info(&xe->drm, "Allocated fbdev into stolen\n"); >> + else >> + drm_info(&xe->drm, "Allocated fbdev into stolen failed: %li\n", PTR_ERR(obj)); >> + } else { >> + drm_info(&xe->drm, "Allocating fbdev: Stolen memory not preferred.\n"); >> + } >> + >> + if (IS_ERR(obj)) { >> + obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, >> + ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | >> + XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | >> + XE_BO_FLAG_GGTT, false); >> + } >> + >> + if (IS_ERR(obj)) { >> + drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", obj); >> + return ERR_PTR(-ENOMEM); >> + } >> + >> + return &obj->ttm.base; >> +} >> + >> +static void xe_display_bo_fbdev_destroy(struct drm_gem_object *obj) >> +{ >> + xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); >> +} >> + >> +static int xe_display_bo_fbdev_fill_info(struct drm_gem_object *_obj, struct fb_info *info, >> + struct i915_vma *vma) >> +{ >> + struct xe_bo *obj = gem_to_xe_bo(_obj); >> + struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); >> + >> + if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { >> + if (obj->flags & XE_BO_FLAG_STOLEN) >> + info->fix.smem_start = xe_ttm_stolen_io_offset(obj, 0); >> + else >> + info->fix.smem_start = >> + pci_resource_start(pdev, 2) + >> + xe_bo_addr(obj, 0, XE_PAGE_SIZE); >> + >> + info->fix.smem_len = obj->ttm.base.size; >> + } else { >> + /* XXX: Pure fiction, as the BO may not be physically accessible.. */ >> + info->fix.smem_start = 0; >> + info->fix.smem_len = obj->ttm.base.size; >> + } >> + XE_WARN_ON(iosys_map_is_null(&obj->vmap)); >> + >> + info->screen_base = obj->vmap.vaddr_iomem; >> + info->screen_size = obj->ttm.base.size; >> + >> + return 0; >> +} >> +#endif >> + >> const struct intel_display_bo_interface xe_display_bo_interface = { >> .is_protected = xe_display_bo_is_protected, >> .key_check = xe_pxp_obj_key_check, >> @@ -109,4 +220,10 @@ const struct intel_display_bo_interface xe_display_bo_interface = { >> .framebuffer_init = xe_display_bo_framebuffer_init, >> .framebuffer_fini = xe_display_bo_framebuffer_fini, >> .framebuffer_lookup = xe_display_bo_framebuffer_lookup, >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> + .fbdev_create = xe_display_bo_fbdev_create, >> + .fbdev_destroy = xe_display_bo_fbdev_destroy, >> + .fbdev_fill_info = xe_display_bo_fbdev_fill_info, >> + .fbdev_pitch_align = xe_display_bo_fbdev_pitch_align, >> +#endif >> }; >> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.h b/drivers/gpu/drm/xe/display/xe_display_bo.h >> index 6879c104b0b1..8980e6ecf54a 100644 >> --- a/drivers/gpu/drm/xe/display/xe_display_bo.h >> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.h >> @@ -4,6 +4,12 @@ >> #ifndef __XE_DISPLAY_BO_H__ >> #define __XE_DISPLAY_BO_H__ >> >> +#include <linux/types.h> >> + >> +struct drm_device; >> + >> +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); >> + >> extern const struct intel_display_bo_interface xe_display_bo_interface; >> >> #endif >> diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c >> index 730c6dc49522..6e0a22429184 100644 >> --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c >> +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c >> @@ -12,8 +12,8 @@ >> #include "intel_display_types.h" >> #include "intel_fb.h" >> #include "intel_fb_pin.h" >> -#include "intel_fbdev_fb.h" >> #include "xe_bo.h" >> +#include "xe_display_bo.h" >> #include "xe_display_vma.h" >> #include "xe_ggtt.h" >> #include "xe_mmio.h" >> @@ -87,7 +87,7 @@ initial_plane_bo(struct xe_device *xe, >> >> if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && >> IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && >> - !intel_fbdev_fb_prefer_stolen(&xe->drm, plane_config->size)) { >> + !xe_display_bo_fbdev_prefer_stolen(&xe->drm, plane_config->size)) { >> drm_info(&xe->drm, "Initial FB size exceeds half of stolen, discarding\n"); >> return NULL; >> } >> diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h >> index 97ec94a2e749..2fc1794a3da4 100644 >> --- a/include/drm/intel/display_parent_interface.h >> +++ b/include/drm/intel/display_parent_interface.h >> @@ -15,6 +15,7 @@ struct drm_gem_object; >> struct drm_mode_fb_cmd2; >> struct drm_plane_state; >> struct drm_scanout_buffer; >> +struct fb_info; >> struct i915_vma; >> struct intel_dpt; >> struct intel_dsb_buffer; >> @@ -43,6 +44,12 @@ struct intel_display_bo_interface { >> struct drm_gem_object *(*framebuffer_lookup)(struct drm_device *drm, >> struct drm_file *filp, >> const struct drm_mode_fb_cmd2 *user_mode_cmd); >> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >> + struct drm_gem_object *(*fbdev_create)(struct drm_device *drm, int size); >> + void (*fbdev_destroy)(struct drm_gem_object *obj); >> + int (*fbdev_fill_info)(struct drm_gem_object *obj, struct fb_info *info, struct i915_vma *vma); >> + u32 (*fbdev_pitch_align)(u32 stride); >> +#endif >> }; >> >> struct intel_display_dpt_interface { >> -- >> 2.47.3 >> >> -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/5] drm/{i915,xe}: move fbdev fb calls to parent interface 2026-03-25 8:13 ` [PATCH 3/5] drm/{i915, xe}: " Jani Nikula @ 2026-03-25 9:32 ` Michał Grzelak 0 siblings, 0 replies; 16+ messages in thread From: Michał Grzelak @ 2026-03-25 9:32 UTC (permalink / raw) To: Jani Nikula Cc: Michał Grzelak, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org [-- Attachment #1: Type: text/plain, Size: 33456 bytes --] On Wed, 25 Mar 2026, Jani Nikula wrote: > On Wed, 25 Mar 2026, Michał Grzelak <michal.grzelak@intel.com> wrote: >> On Wed, 18 Mar 2026, Jani Nikula wrote: >>> Move the driver specific fbdev fb calls to the display parent >>> interface. Reuse the existing struct intel_display_bo_interface, as this >>> is mostly about gem objects. >>> >>> Put everything behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) to catch >>> configuration issues at build or link time. >>> >>> Signed-off-by: Jani Nikula <jani.nikula@intel.com> >>> --- >>> drivers/gpu/drm/i915/Makefile | 3 +- >>> drivers/gpu/drm/i915/display/intel_bo.c | 27 ++++ >>> drivers/gpu/drm/i915/display/intel_bo.h | 8 ++ >>> drivers/gpu/drm/i915/display/intel_fbdev.c | 14 +-- >>> drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 118 ------------------ >>> drivers/gpu/drm/i915/display/intel_fbdev_fb.h | 24 ---- >>> drivers/gpu/drm/i915/i915_bo.c | 116 +++++++++++++++++ >>> drivers/gpu/drm/i915/i915_bo.h | 6 + >>> drivers/gpu/drm/i915/i915_initial_plane.c | 4 +- >>> drivers/gpu/drm/xe/Makefile | 1 - >>> drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 116 ----------------- >>> drivers/gpu/drm/xe/display/xe_display_bo.c | 117 +++++++++++++++++ >>> drivers/gpu/drm/xe/display/xe_display_bo.h | 6 + >>> drivers/gpu/drm/xe/display/xe_initial_plane.c | 4 +- >>> include/drm/intel/display_parent_interface.h | 7 ++ >>> 15 files changed, 299 insertions(+), 272 deletions(-) >>> delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.c >>> delete mode 100644 drivers/gpu/drm/i915/display/intel_fbdev_fb.h >>> delete mode 100644 drivers/gpu/drm/xe/display/intel_fbdev_fb.c >>> >>> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile >>> index be976a90c5a6..026614d74cc4 100644 >>> --- a/drivers/gpu/drm/i915/Makefile >>> +++ b/drivers/gpu/drm/i915/Makefile >>> @@ -324,8 +324,7 @@ i915-$(CONFIG_ACPI) += \ >>> display/intel_acpi.o \ >>> display/intel_opregion.o >>> i915-$(CONFIG_DRM_FBDEV_EMULATION) += \ >>> - display/intel_fbdev.o \ >>> - display/intel_fbdev_fb.o >>> + display/intel_fbdev.o >>> i915-$(CONFIG_DEBUG_FS) += \ >>> display/intel_display_debugfs.o \ >>> display/intel_display_debugfs_params.o \ >>> diff --git a/drivers/gpu/drm/i915/display/intel_bo.c b/drivers/gpu/drm/i915/display/intel_bo.c >>> index 3b82d38a0504..8ecdbb7e39f3 100644 >>> --- a/drivers/gpu/drm/i915/display/intel_bo.c >>> +++ b/drivers/gpu/drm/i915/display/intel_bo.c >>> @@ -85,3 +85,30 @@ struct drm_gem_object *intel_bo_framebuffer_lookup(struct intel_display *display >>> { >>> return display->parent->bo->framebuffer_lookup(display->drm, filp, user_mode_cmd); >>> } >>> + >>> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >>> +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride) >>> +{ >>> + return display->parent->bo->fbdev_pitch_align(stride); >>> +} >>> + >>> +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display *display, int size) >>> +{ >>> + return display->parent->bo->fbdev_create(display->drm, size); >>> +} >>> + >>> +void intel_bo_fbdev_destroy(struct drm_gem_object *obj) >>> +{ >>> + struct intel_display *display = to_intel_display(obj->dev); >>> + >>> + display->parent->bo->fbdev_destroy(obj); >>> +} >>> + >>> +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info *info, >>> + struct i915_vma *vma) >>> +{ >>> + struct intel_display *display = to_intel_display(obj->dev); >>> + >>> + return display->parent->bo->fbdev_fill_info(obj, info, vma); >>> +} >>> +#endif >>> diff --git a/drivers/gpu/drm/i915/display/intel_bo.h b/drivers/gpu/drm/i915/display/intel_bo.h >>> index aec188c706c2..348f7fa66960 100644 >>> --- a/drivers/gpu/drm/i915/display/intel_bo.h >>> +++ b/drivers/gpu/drm/i915/display/intel_bo.h >>> @@ -10,6 +10,8 @@ struct drm_file; >>> struct drm_gem_object; >>> struct drm_mode_fb_cmd2; >>> struct drm_scanout_buffer; >>> +struct fb_info; >>> +struct i915_vma; >>> struct intel_display; >>> struct intel_framebuffer; >>> struct seq_file; >>> @@ -31,4 +33,10 @@ 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); >>> >>> +u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride); >>> +struct drm_gem_object *intel_bo_fbdev_create(struct intel_display *display, int size); >>> +void intel_bo_fbdev_destroy(struct drm_gem_object *obj); >>> +int intel_bo_fbdev_fill_info(struct drm_gem_object *obj, struct fb_info *info, >>> + struct i915_vma *vma); >>> + >>> #endif /* __INTEL_BO__ */ >>> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c >>> index 6401aaaba199..14ac01c1b3eb 100644 >>> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c >>> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c >>> @@ -54,7 +54,6 @@ >>> #include "intel_fb.h" >>> #include "intel_fb_pin.h" >>> #include "intel_fbdev.h" >>> -#include "intel_fbdev_fb.h" >>> #include "intel_frontbuffer.h" >>> >>> struct intel_fbdev { >>> @@ -204,7 +203,8 @@ static const struct drm_fb_helper_funcs intel_fb_helper_funcs = { >>> .fb_set_suspend = intelfb_set_suspend, >>> }; >>> >>> -static void intel_fbdev_fill_mode_cmd(struct drm_fb_helper_surface_size *sizes, >>> +static void intel_fbdev_fill_mode_cmd(struct intel_display *display, >>> + struct drm_fb_helper_surface_size *sizes, >>> struct drm_mode_fb_cmd2 *mode_cmd) >>> { >>> /* we don't do packed 24bpp */ >>> @@ -215,7 +215,7 @@ static void intel_fbdev_fill_mode_cmd(struct drm_fb_helper_surface_size *sizes, >>> mode_cmd->width = sizes->surface_width; >>> mode_cmd->height = sizes->surface_height; >>> >>> - mode_cmd->pitches[0] = intel_fbdev_fb_pitch_align(mode_cmd->width * DIV_ROUND_UP(sizes->surface_bpp, 8)); >>> + mode_cmd->pitches[0] = intel_bo_fbdev_pitch_align(display, mode_cmd->width * DIV_ROUND_UP(sizes->surface_bpp, 8)); >>> mode_cmd->pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, >>> sizes->surface_depth); >>> mode_cmd->modifier[0] = DRM_FORMAT_MOD_LINEAR; >>> @@ -230,12 +230,12 @@ __intel_fbdev_fb_alloc(struct intel_display *display, >>> struct drm_gem_object *obj; >>> int size; >>> >>> - intel_fbdev_fill_mode_cmd(sizes, &mode_cmd); >>> + intel_fbdev_fill_mode_cmd(display, sizes, &mode_cmd); >>> >>> size = mode_cmd.pitches[0] * mode_cmd.height; >>> size = PAGE_ALIGN(size); >>> >>> - obj = intel_fbdev_fb_bo_create(display->drm, size); >>> + obj = intel_bo_fbdev_create(display, size); >>> if (IS_ERR(obj)) { >>> fb = ERR_CAST(obj); >>> goto err; >>> @@ -247,7 +247,7 @@ __intel_fbdev_fb_alloc(struct intel_display *display, >>> mode_cmd.modifier[0]), >>> &mode_cmd); >>> if (IS_ERR(fb)) { >>> - intel_fbdev_fb_bo_destroy(obj); >>> + intel_bo_fbdev_destroy(obj); >>> goto err; >>> } >>> >>> @@ -327,7 +327,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, >>> >>> obj = intel_fb_bo(&fb->base); >>> >>> - ret = intel_fbdev_fb_fill_info(obj, info, vma); >>> + ret = intel_bo_fbdev_fill_info(obj, info, vma); >>> if (ret) >>> goto out_unpin; >>> >>> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c b/drivers/gpu/drm/i915/display/intel_fbdev_fb.c >>> deleted file mode 100644 >>> index a696ce42d10b..000000000000 >>> --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.c >>> +++ /dev/null >>> @@ -1,118 +0,0 @@ >>> -/* SPDX-License-Identifier: MIT */ >>> -/* >>> - * Copyright © 2023 Intel Corporation >>> - */ >>> - >>> -#include <linux/fb.h> >>> - >>> -#include <drm/drm_print.h> >>> - >>> -#include "gem/i915_gem_lmem.h" >>> - >>> -#include "i915_drv.h" >>> -#include "intel_fbdev_fb.h" >>> - >>> -u32 intel_fbdev_fb_pitch_align(u32 stride) >>> -{ >>> - return ALIGN(stride, 64); >>> -} >>> - >>> -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size) >>> -{ >>> - struct drm_i915_private *i915 = to_i915(drm); >>> - >>> - /* Skip stolen on MTL as Wa_22018444074 mitigation. */ >>> - if (IS_METEORLAKE(i915)) >>> - return false; >>> - >>> - /* >>> - * If the FB is too big, just don't use it since fbdev is not very >>> - * important and we should probably use that space with FBC or other >>> - * features. >>> - */ >>> - return i915->dsm.usable_size >= size * 2; >>> -} >>> - >>> -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size) >>> -{ >>> - struct drm_i915_private *i915 = to_i915(drm); >>> - struct drm_i915_gem_object *obj; >>> - >>> - obj = ERR_PTR(-ENODEV); >>> - if (HAS_LMEM(i915)) { >>> - obj = i915_gem_object_create_lmem(i915, size, >>> - I915_BO_ALLOC_CONTIGUOUS | >>> - I915_BO_ALLOC_USER); >>> - } else { >>> - if (intel_fbdev_fb_prefer_stolen(drm, size)) >>> - obj = i915_gem_object_create_stolen(i915, size); >>> - else >>> - drm_info(drm, "Allocating fbdev: Stolen memory not preferred.\n"); >>> - >>> - if (IS_ERR(obj)) >>> - obj = i915_gem_object_create_shmem(i915, size); >>> - } >>> - >>> - if (IS_ERR(obj)) { >>> - drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); >>> - return ERR_PTR(-ENOMEM); >>> - } >>> - >>> - return &obj->base; >>> -} >>> - >>> -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) >>> -{ >>> - drm_gem_object_put(obj); >>> -} >>> - >>> -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, >>> - struct i915_vma *vma) >>> -{ >>> - struct drm_i915_private *i915 = to_i915(_obj->dev); >>> - struct drm_i915_gem_object *obj = to_intel_bo(_obj); >>> - struct i915_gem_ww_ctx ww; >>> - void __iomem *vaddr; >>> - int ret; >>> - >>> - if (i915_gem_object_is_lmem(obj)) { >>> - struct intel_memory_region *mem = obj->mm.region; >>> - >>> - /* Use fbdev's framebuffer from lmem for discrete */ >>> - info->fix.smem_start = >>> - (unsigned long)(mem->io.start + >>> - i915_gem_object_get_dma_address(obj, 0) - >>> - mem->region.start); >>> - info->fix.smem_len = obj->base.size; >>> - } else { >>> - struct i915_ggtt *ggtt = to_gt(i915)->ggtt; >>> - >>> - /* Our framebuffer is the entirety of fbdev's system memory */ >>> - info->fix.smem_start = >>> - (unsigned long)(ggtt->gmadr.start + i915_ggtt_offset(vma)); >>> - info->fix.smem_len = vma->size; >>> - } >>> - >>> - for_i915_gem_ww(&ww, ret, false) { >>> - ret = i915_gem_object_lock(vma->obj, &ww); >>> - >>> - if (ret) >>> - continue; >>> - >>> - vaddr = i915_vma_pin_iomap(vma); >>> - if (IS_ERR(vaddr)) { >>> - drm_err(&i915->drm, >>> - "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); >>> - ret = PTR_ERR(vaddr); >>> - continue; >>> - } >>> - } >>> - >>> - if (ret) >>> - return ret; >>> - >>> - info->screen_base = vaddr; >>> - info->screen_size = intel_bo_to_drm_bo(obj)->size; >>> - >>> - return 0; >>> -} >>> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h b/drivers/gpu/drm/i915/display/intel_fbdev_fb.h >>> deleted file mode 100644 >>> index ddba45e9839d..000000000000 >>> --- a/drivers/gpu/drm/i915/display/intel_fbdev_fb.h >>> +++ /dev/null >>> @@ -1,24 +0,0 @@ >>> -/* SPDX-License-Identifier: MIT */ >>> -/* >>> - * Copyright © 2023 Intel Corporation >>> - */ >>> - >>> -#ifndef __INTEL_FBDEV_FB_H__ >>> -#define __INTEL_FBDEV_FB_H__ >>> - >>> -#include <linux/types.h> >>> - >>> -struct drm_device; >>> -struct drm_gem_object; >>> -struct drm_mode_fb_cmd2; >>> -struct fb_info; >>> -struct i915_vma; >>> - >>> -u32 intel_fbdev_fb_pitch_align(u32 stride); >>> -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size); >>> -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj); >>> -int intel_fbdev_fb_fill_info(struct drm_gem_object *obj, struct fb_info *info, >>> - struct i915_vma *vma); >>> -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size); >>> - >>> -#endif >>> diff --git a/drivers/gpu/drm/i915/i915_bo.c b/drivers/gpu/drm/i915/i915_bo.c >>> index 1789f7cab05c..7e38d002478e 100644 >>> --- a/drivers/gpu/drm/i915/i915_bo.c >>> +++ b/drivers/gpu/drm/i915/i915_bo.c >>> @@ -1,11 +1,14 @@ >>> // SPDX-License-Identifier: MIT >>> /* Copyright © 2024 Intel Corporation */ >>> >>> +#include <linux/fb.h> >>> + >>> #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_lmem.h" >>> #include "gem/i915_gem_mman.h" >>> #include "gem/i915_gem_object.h" >>> #include "gem/i915_gem_object_frontbuffer.h" >>> @@ -141,6 +144,113 @@ i915_bo_framebuffer_lookup(struct drm_device *drm, >>> return intel_bo_to_drm_bo(obj); >>> } >>> >>> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >>> +static u32 i915_bo_fbdev_pitch_align(u32 stride) >>> +{ >>> + return ALIGN(stride, 64); >>> +} >>> + >>> +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) >>> +{ >>> + struct drm_i915_private *i915 = to_i915(drm); >>> + >>> + /* Skip stolen on MTL as Wa_22018444074 mitigation. */ >>> + if (IS_METEORLAKE(i915)) >>> + return false; >>> + >>> + /* >>> + * If the FB is too big, just don't use it since fbdev is not very >>> + * important and we should probably use that space with FBC or other >>> + * features. >>> + */ >>> + return i915->dsm.usable_size >= size * 2; >>> +} >>> + >>> +static struct drm_gem_object *i915_bo_fbdev_create(struct drm_device *drm, int size) >>> +{ >>> + struct drm_i915_private *i915 = to_i915(drm); >> >> Can we add same trick for i915_bo_fbdev_create() as we are doing >> with i915_bo_fbdev_prefer_stolen() in patch [4/5]? Or e.g. add a >> separate 6th patch for that? Up to patch reordering, of course. > > I don't know what you mean. > In case of xe_*, I was wondering about such 3 hunks: diff --git a/drivers/gpu/drm/i915/display/intel_bo.c b/drivers/gpu/drm/i915/display/intel_bo.c index 8ecdbb7e39f3..9e02910d1e69 100644 --- a/drivers/gpu/drm/i915/display/intel_bo.c +++ b/drivers/gpu/drm/i915/display/intel_bo.c @@ -94,7 +94,9 @@ u32 intel_bo_fbdev_pitch_align(struct intel_display *display, u32 stride) struct drm_gem_object *intel_bo_fbdev_create(struct intel_display *display, int size) { - return display->parent->bo->fbdev_create(display->drm, size); + struct xe_device *xe = to_xe(display->drm); + + return display->parent->bo->fbdev_create(xe, size); } void intel_bo_fbdev_destroy(struct drm_gem_object *obj) diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c b/drivers/gpu/drm/xe/display/xe_display_bo.c index e81f0adac612..25fad685c2a3 100644 --- a/drivers/gpu/drm/xe/display/xe_display_bo.c +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c @@ -141,9 +141,8 @@ bool xe_display_bo_fbdev_prefer_stolen(struct xe_device *xe, unsigned int size) return stolen->size >= size * 2; } -static struct drm_gem_object *xe_display_bo_fbdev_create(struct drm_device *drm, int size) +static struct drm_gem_object *xe_display_bo_fbdev_create(struct xe_device *xe, int size) { - struct xe_device *xe = to_xe_device(drm); struct xe_bo *obj; obj = ERR_PTR(-ENODEV); diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h index 2fc1794a3da4..607011b8ba04 100644 --- a/include/drm/intel/display_parent_interface.h +++ b/include/drm/intel/display_parent_interface.h @@ -45,7 +45,7 @@ struct intel_display_bo_interface { struct drm_file *filp, const struct drm_mode_fb_cmd2 *user_mode_cmd); #if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) - struct drm_gem_object *(*fbdev_create)(struct drm_device *drm, int size); + struct drm_gem_object *(*fbdev_create)(struct xe_device *xe, int size); void (*fbdev_destroy)(struct drm_gem_object *obj); int (*fbdev_fill_info)(struct drm_gem_object *obj, struct fb_info *info, struct i915_vma *vma); u32 (*fbdev_pitch_align)(u32 stride); But I missed that we can't do that because we would need to change ->bo->fbdev_create(drm, ...) into either ->bo->fbdev_create(xe, ...) or ->bo->fbdev_create(i915, ...), which in both cases doesn't make sense. So please ignore the comment and keep the R-B. BR, Michał > >> >>> + struct drm_i915_gem_object *obj; >>> + >>> + obj = ERR_PTR(-ENODEV); >>> + if (HAS_LMEM(i915)) { >>> + obj = i915_gem_object_create_lmem(i915, size, >>> + I915_BO_ALLOC_CONTIGUOUS | >>> + I915_BO_ALLOC_USER); >>> + } else { >>> + if (i915_bo_fbdev_prefer_stolen(drm, size)) >>> + obj = i915_gem_object_create_stolen(i915, size); >>> + else >>> + drm_info(drm, "Allocating fbdev: Stolen memory not preferred.\n"); >>> + >>> + if (IS_ERR(obj)) >>> + obj = i915_gem_object_create_shmem(i915, size); >>> + } >>> + >>> + if (IS_ERR(obj)) { >>> + drm_err(drm, "failed to allocate framebuffer (%pe)\n", obj); >>> + return ERR_PTR(-ENOMEM); >>> + } >>> + >>> + return &obj->base; >>> +} >>> + >>> +static void i915_bo_fbdev_destroy(struct drm_gem_object *obj) >>> +{ >>> + drm_gem_object_put(obj); >>> +} >>> + >>> +static int i915_bo_fbdev_fill_info(struct drm_gem_object *_obj, struct fb_info *info, >>> + struct i915_vma *vma) >>> +{ >>> + struct drm_i915_private *i915 = to_i915(_obj->dev); >>> + struct drm_i915_gem_object *obj = to_intel_bo(_obj); >>> + struct i915_gem_ww_ctx ww; >>> + void __iomem *vaddr; >>> + int ret; >>> + >>> + if (i915_gem_object_is_lmem(obj)) { >>> + struct intel_memory_region *mem = obj->mm.region; >>> + >>> + /* Use fbdev's framebuffer from lmem for discrete */ >>> + info->fix.smem_start = >>> + (unsigned long)(mem->io.start + >>> + i915_gem_object_get_dma_address(obj, 0) - >>> + mem->region.start); >>> + info->fix.smem_len = obj->base.size; >>> + } else { >>> + struct i915_ggtt *ggtt = to_gt(i915)->ggtt; >>> + >>> + /* Our framebuffer is the entirety of fbdev's system memory */ >>> + info->fix.smem_start = >>> + (unsigned long)(ggtt->gmadr.start + i915_ggtt_offset(vma)); >>> + info->fix.smem_len = vma->size; >>> + } >>> + >>> + for_i915_gem_ww(&ww, ret, false) { >>> + ret = i915_gem_object_lock(vma->obj, &ww); >>> + >>> + if (ret) >>> + continue; >>> + >>> + vaddr = i915_vma_pin_iomap(vma); >>> + if (IS_ERR(vaddr)) { >>> + drm_err(&i915->drm, >>> + "Failed to remap framebuffer into virtual memory (%pe)\n", vaddr); >>> + ret = PTR_ERR(vaddr); >>> + continue; >>> + } >>> + } >>> + >>> + if (ret) >>> + return ret; >>> + >>> + info->screen_base = vaddr; >>> + info->screen_size = intel_bo_to_drm_bo(obj)->size; >>> + >>> + return 0; >>> +} >>> +#endif >>> + >>> const struct intel_display_bo_interface i915_display_bo_interface = { >>> .is_tiled = i915_bo_is_tiled, >>> .is_userptr = i915_bo_is_userptr, >>> @@ -153,4 +263,10 @@ const struct intel_display_bo_interface i915_display_bo_interface = { >>> .framebuffer_init = i915_bo_framebuffer_init, >>> .framebuffer_fini = i915_bo_framebuffer_fini, >>> .framebuffer_lookup = i915_bo_framebuffer_lookup, >>> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >>> + .fbdev_create = i915_bo_fbdev_create, >>> + .fbdev_destroy = i915_bo_fbdev_destroy, >>> + .fbdev_fill_info = i915_bo_fbdev_fill_info, >>> + .fbdev_pitch_align = i915_bo_fbdev_pitch_align, >>> +#endif >>> }; >>> diff --git a/drivers/gpu/drm/i915/i915_bo.h b/drivers/gpu/drm/i915/i915_bo.h >>> index 57255d052dd9..2a0f3050dd42 100644 >>> --- a/drivers/gpu/drm/i915/i915_bo.h >>> +++ b/drivers/gpu/drm/i915/i915_bo.h >>> @@ -4,6 +4,12 @@ >>> #ifndef __I915_BO_H__ >>> #define __I915_BO_H__ >>> >>> +#include <linux/types.h> >>> + >>> +struct drm_device; >>> + >>> +bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); >>> + >>> extern const struct intel_display_bo_interface i915_display_bo_interface; >>> >>> #endif /* __I915_BO_H__ */ >>> diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c b/drivers/gpu/drm/i915/i915_initial_plane.c >>> index 390a9248d631..f4d631a395d0 100644 >>> --- a/drivers/gpu/drm/i915/i915_initial_plane.c >>> +++ b/drivers/gpu/drm/i915/i915_initial_plane.c >>> @@ -9,10 +9,10 @@ >>> #include "display/intel_crtc.h" >>> #include "display/intel_display_types.h" >>> #include "display/intel_fb.h" >>> -#include "display/intel_fbdev_fb.h" >>> #include "gem/i915_gem_lmem.h" >>> #include "gem/i915_gem_region.h" >>> >>> +#include "i915_bo.h" >>> #include "i915_drv.h" >>> #include "i915_initial_plane.h" >>> >>> @@ -118,7 +118,7 @@ initial_plane_vma(struct drm_i915_private *i915, >>> if (IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && >>> IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && >>> mem == i915->mm.stolen_region && >>> - !intel_fbdev_fb_prefer_stolen(&i915->drm, size)) { >>> + !i915_bo_fbdev_prefer_stolen(&i915->drm, size)) { >>> drm_dbg_kms(&i915->drm, "Initial FB size exceeds half of stolen, discarding\n"); >>> return NULL; >>> } >>> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile >>> index dab979287a96..936eb79e9269 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_fbdev_fb.o \ >>> display/xe_display.o \ >>> display/xe_display_bo.o \ >>> display/xe_display_pcode.o \ >>> diff --git a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c b/drivers/gpu/drm/xe/display/intel_fbdev_fb.c >>> deleted file mode 100644 >>> index 2ad5e5a79287..000000000000 >>> --- a/drivers/gpu/drm/xe/display/intel_fbdev_fb.c >>> +++ /dev/null >>> @@ -1,116 +0,0 @@ >>> -/* SPDX-License-Identifier: MIT */ >>> -/* >>> - * Copyright © 2023 Intel Corporation >>> - */ >>> - >>> -#include <linux/fb.h> >>> - >>> -#include "intel_fbdev_fb.h" >>> -#include "xe_bo.h" >>> -#include "xe_ttm_stolen_mgr.h" >>> -#include "xe_wa.h" >>> - >>> -#include <generated/xe_device_wa_oob.h> >>> - >>> -/* >>> - * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride >>> - * alignment. The same 64 as i915 uses should be fine, and we shouldn't need to >>> - * have driver specific values. However, dropping the stride alignment to 64 >>> - * leads to underflowing the bo pin count in the atomic cleanup work. >>> - */ >>> -u32 intel_fbdev_fb_pitch_align(u32 stride) >>> -{ >>> - return ALIGN(stride, XE_PAGE_SIZE); >>> -} >>> - >>> -bool intel_fbdev_fb_prefer_stolen(struct drm_device *drm, unsigned int size) >>> -{ >>> - struct xe_device *xe = to_xe_device(drm); >>> - struct ttm_resource_manager *stolen; >>> - >>> - stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); >>> - if (!stolen) >>> - return false; >>> - >>> - if (IS_DGFX(xe)) >>> - return false; >>> - >>> - if (XE_DEVICE_WA(xe, 22019338487_display)) >>> - return false; >>> - >>> - /* >>> - * If the FB is too big, just don't use it since fbdev is not very >>> - * important and we should probably use that space with FBC or other >>> - * features. >>> - */ >>> - return stolen->size >= size * 2; >>> -} >>> - >>> -struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size) >>> -{ >>> - struct xe_device *xe = to_xe_device(drm); >>> - struct xe_bo *obj; >>> - >>> - obj = ERR_PTR(-ENODEV); >>> - >>> - if (intel_fbdev_fb_prefer_stolen(drm, size)) { >>> - obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), >>> - size, >>> - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | >>> - XE_BO_FLAG_STOLEN | >>> - XE_BO_FLAG_GGTT, false); >>> - if (!IS_ERR(obj)) >>> - drm_info(&xe->drm, "Allocated fbdev into stolen\n"); >>> - else >>> - drm_info(&xe->drm, "Allocated fbdev into stolen failed: %li\n", PTR_ERR(obj)); >>> - } else { >>> - drm_info(&xe->drm, "Allocating fbdev: Stolen memory not preferred.\n"); >>> - } >>> - >>> - if (IS_ERR(obj)) { >>> - obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, >>> - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | >>> - XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | >>> - XE_BO_FLAG_GGTT, false); >>> - } >>> - >>> - if (IS_ERR(obj)) { >>> - drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", obj); >>> - return ERR_PTR(-ENOMEM); >>> - } >>> - >>> - return &obj->ttm.base; >>> -} >>> - >>> -void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj) >>> -{ >>> - xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); >>> -} >>> - >>> -int intel_fbdev_fb_fill_info(struct drm_gem_object *_obj, struct fb_info *info, >>> - struct i915_vma *vma) >>> -{ >>> - struct xe_bo *obj = gem_to_xe_bo(_obj); >>> - struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); >>> - >>> - if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { >>> - if (obj->flags & XE_BO_FLAG_STOLEN) >>> - info->fix.smem_start = xe_ttm_stolen_io_offset(obj, 0); >>> - else >>> - info->fix.smem_start = >>> - pci_resource_start(pdev, 2) + >>> - xe_bo_addr(obj, 0, XE_PAGE_SIZE); >>> - >>> - info->fix.smem_len = obj->ttm.base.size; >>> - } else { >>> - /* XXX: Pure fiction, as the BO may not be physically accessible.. */ >>> - info->fix.smem_start = 0; >>> - info->fix.smem_len = obj->ttm.base.size; >>> - } >>> - XE_WARN_ON(iosys_map_is_null(&obj->vmap)); >>> - >>> - info->screen_base = obj->vmap.vaddr_iomem; >>> - info->screen_size = obj->ttm.base.size; >>> - >>> - return 0; >>> -} >>> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c b/drivers/gpu/drm/xe/display/xe_display_bo.c >>> index a689f71e7b14..10436edecc35 100644 >>> --- a/drivers/gpu/drm/xe/display/xe_display_bo.c >>> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c >>> @@ -1,6 +1,8 @@ >>> // SPDX-License-Identifier: MIT >>> /* Copyright © 2024 Intel Corporation */ >>> >>> +#include <linux/fb.h> >>> + >>> #include <drm/drm_gem.h> >>> #include <drm/intel/display_parent_interface.h> >>> >>> @@ -8,6 +10,10 @@ >>> #include "xe_bo.h" >>> #include "xe_display_bo.h" >>> #include "xe_pxp.h" >>> +#include "xe_ttm_stolen_mgr.h" >>> +#include "xe_wa.h" >>> + >>> +#include <generated/xe_device_wa_oob.h> >>> >>> static bool xe_display_bo_is_protected(struct drm_gem_object *obj) >>> { >>> @@ -101,6 +107,111 @@ xe_display_bo_framebuffer_lookup(struct drm_device *drm, >>> return gem; >>> } >>> >>> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >>> +/* >>> + * FIXME: There shouldn't be any reason to have XE_PAGE_SIZE stride >>> + * alignment. The same 64 as i915 uses should be fine, and we shouldn't need to >>> + * have driver specific values. However, dropping the stride alignment to 64 >>> + * leads to underflowing the bo pin count in the atomic cleanup work. >>> + */ >>> +static u32 xe_display_bo_fbdev_pitch_align(u32 stride) >>> +{ >>> + return ALIGN(stride, XE_PAGE_SIZE); >>> +} >>> + >>> +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) >>> +{ >>> + struct xe_device *xe = to_xe_device(drm); >>> + struct ttm_resource_manager *stolen; >>> + >>> + stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); >>> + if (!stolen) >>> + return false; >>> + >>> + if (IS_DGFX(xe)) >>> + return false; >>> + >>> + if (XE_DEVICE_WA(xe, 22019338487_display)) >>> + return false; >>> + >>> + /* >>> + * If the FB is too big, just don't use it since fbdev is not very >>> + * important and we should probably use that space with FBC or other >>> + * features. >>> + */ >>> + return stolen->size >= size * 2; >>> +} >>> + >>> +static struct drm_gem_object *xe_display_bo_fbdev_create(struct drm_device *drm, int size) >>> +{ >>> + struct xe_device *xe = to_xe_device(drm); >> >> Same question here, but adding it in patch [5/5] or as new 7th patch. Up >> to patch reordering of course. >> >> BR, >> Michał >> >>> + struct xe_bo *obj; >>> + >>> + obj = ERR_PTR(-ENODEV); >>> + >>> + if (xe_display_bo_fbdev_prefer_stolen(drm, size)) { >>> + obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), >>> + size, >>> + ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | >>> + XE_BO_FLAG_STOLEN | >>> + XE_BO_FLAG_GGTT, false); >>> + if (!IS_ERR(obj)) >>> + drm_info(&xe->drm, "Allocated fbdev into stolen\n"); >>> + else >>> + drm_info(&xe->drm, "Allocated fbdev into stolen failed: %li\n", PTR_ERR(obj)); >>> + } else { >>> + drm_info(&xe->drm, "Allocating fbdev: Stolen memory not preferred.\n"); >>> + } >>> + >>> + if (IS_ERR(obj)) { >>> + obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, >>> + ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | >>> + XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | >>> + XE_BO_FLAG_GGTT, false); >>> + } >>> + >>> + if (IS_ERR(obj)) { >>> + drm_err(&xe->drm, "failed to allocate framebuffer (%pe)\n", obj); >>> + return ERR_PTR(-ENOMEM); >>> + } >>> + >>> + return &obj->ttm.base; >>> +} >>> + >>> +static void xe_display_bo_fbdev_destroy(struct drm_gem_object *obj) >>> +{ >>> + xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj)); >>> +} >>> + >>> +static int xe_display_bo_fbdev_fill_info(struct drm_gem_object *_obj, struct fb_info *info, >>> + struct i915_vma *vma) >>> +{ >>> + struct xe_bo *obj = gem_to_xe_bo(_obj); >>> + struct pci_dev *pdev = to_pci_dev(_obj->dev->dev); >>> + >>> + if (!(obj->flags & XE_BO_FLAG_SYSTEM)) { >>> + if (obj->flags & XE_BO_FLAG_STOLEN) >>> + info->fix.smem_start = xe_ttm_stolen_io_offset(obj, 0); >>> + else >>> + info->fix.smem_start = >>> + pci_resource_start(pdev, 2) + >>> + xe_bo_addr(obj, 0, XE_PAGE_SIZE); >>> + >>> + info->fix.smem_len = obj->ttm.base.size; >>> + } else { >>> + /* XXX: Pure fiction, as the BO may not be physically accessible.. */ >>> + info->fix.smem_start = 0; >>> + info->fix.smem_len = obj->ttm.base.size; >>> + } >>> + XE_WARN_ON(iosys_map_is_null(&obj->vmap)); >>> + >>> + info->screen_base = obj->vmap.vaddr_iomem; >>> + info->screen_size = obj->ttm.base.size; >>> + >>> + return 0; >>> +} >>> +#endif >>> + >>> const struct intel_display_bo_interface xe_display_bo_interface = { >>> .is_protected = xe_display_bo_is_protected, >>> .key_check = xe_pxp_obj_key_check, >>> @@ -109,4 +220,10 @@ const struct intel_display_bo_interface xe_display_bo_interface = { >>> .framebuffer_init = xe_display_bo_framebuffer_init, >>> .framebuffer_fini = xe_display_bo_framebuffer_fini, >>> .framebuffer_lookup = xe_display_bo_framebuffer_lookup, >>> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >>> + .fbdev_create = xe_display_bo_fbdev_create, >>> + .fbdev_destroy = xe_display_bo_fbdev_destroy, >>> + .fbdev_fill_info = xe_display_bo_fbdev_fill_info, >>> + .fbdev_pitch_align = xe_display_bo_fbdev_pitch_align, >>> +#endif >>> }; >>> diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.h b/drivers/gpu/drm/xe/display/xe_display_bo.h >>> index 6879c104b0b1..8980e6ecf54a 100644 >>> --- a/drivers/gpu/drm/xe/display/xe_display_bo.h >>> +++ b/drivers/gpu/drm/xe/display/xe_display_bo.h >>> @@ -4,6 +4,12 @@ >>> #ifndef __XE_DISPLAY_BO_H__ >>> #define __XE_DISPLAY_BO_H__ >>> >>> +#include <linux/types.h> >>> + >>> +struct drm_device; >>> + >>> +bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); >>> + >>> extern const struct intel_display_bo_interface xe_display_bo_interface; >>> >>> #endif >>> diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c >>> index 730c6dc49522..6e0a22429184 100644 >>> --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c >>> +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c >>> @@ -12,8 +12,8 @@ >>> #include "intel_display_types.h" >>> #include "intel_fb.h" >>> #include "intel_fb_pin.h" >>> -#include "intel_fbdev_fb.h" >>> #include "xe_bo.h" >>> +#include "xe_display_bo.h" >>> #include "xe_display_vma.h" >>> #include "xe_ggtt.h" >>> #include "xe_mmio.h" >>> @@ -87,7 +87,7 @@ initial_plane_bo(struct xe_device *xe, >>> >>> if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && >>> IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && >>> - !intel_fbdev_fb_prefer_stolen(&xe->drm, plane_config->size)) { >>> + !xe_display_bo_fbdev_prefer_stolen(&xe->drm, plane_config->size)) { >>> drm_info(&xe->drm, "Initial FB size exceeds half of stolen, discarding\n"); >>> return NULL; >>> } >>> diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h >>> index 97ec94a2e749..2fc1794a3da4 100644 >>> --- a/include/drm/intel/display_parent_interface.h >>> +++ b/include/drm/intel/display_parent_interface.h >>> @@ -15,6 +15,7 @@ struct drm_gem_object; >>> struct drm_mode_fb_cmd2; >>> struct drm_plane_state; >>> struct drm_scanout_buffer; >>> +struct fb_info; >>> struct i915_vma; >>> struct intel_dpt; >>> struct intel_dsb_buffer; >>> @@ -43,6 +44,12 @@ struct intel_display_bo_interface { >>> struct drm_gem_object *(*framebuffer_lookup)(struct drm_device *drm, >>> struct drm_file *filp, >>> const struct drm_mode_fb_cmd2 *user_mode_cmd); >>> +#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) >>> + struct drm_gem_object *(*fbdev_create)(struct drm_device *drm, int size); >>> + void (*fbdev_destroy)(struct drm_gem_object *obj); >>> + int (*fbdev_fill_info)(struct drm_gem_object *obj, struct fb_info *info, struct i915_vma *vma); >>> + u32 (*fbdev_pitch_align)(u32 stride); >>> +#endif >>> }; >>> >>> struct intel_display_dpt_interface { >>> -- >>> 2.47.3 >>> >>> > > -- > Jani Nikula, Intel > ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 4/5] drm/i915: pass struct drm_i915_private to i915_bo_fbdev_prefer_stolen() 2026-03-18 13:29 [PATCH 0/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula ` (2 preceding siblings ...) 2026-03-18 13:29 ` [PATCH 3/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula @ 2026-03-18 13:29 ` Jani Nikula 2026-03-24 23:46 ` Michał Grzelak 2026-03-18 13:29 ` [PATCH 5/5] drm/xe: pass struct xe_device to xe_display_bo_fbdev_prefer_stolen() Jani Nikula ` (2 subsequent siblings) 6 siblings, 1 reply; 16+ messages in thread From: Jani Nikula @ 2026-03-18 13:29 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula This is i915 core code, use struct drm_i915_private for simplicity. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/i915_bo.c | 6 ++---- drivers/gpu/drm/i915/i915_bo.h | 4 ++-- drivers/gpu/drm/i915/i915_initial_plane.c | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_bo.c b/drivers/gpu/drm/i915/i915_bo.c index 7e38d002478e..559341103ca7 100644 --- a/drivers/gpu/drm/i915/i915_bo.c +++ b/drivers/gpu/drm/i915/i915_bo.c @@ -150,10 +150,8 @@ static u32 i915_bo_fbdev_pitch_align(u32 stride) return ALIGN(stride, 64); } -bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) +bool i915_bo_fbdev_prefer_stolen(struct drm_i915_private *i915, unsigned int size) { - struct drm_i915_private *i915 = to_i915(drm); - /* Skip stolen on MTL as Wa_22018444074 mitigation. */ if (IS_METEORLAKE(i915)) return false; @@ -177,7 +175,7 @@ static struct drm_gem_object *i915_bo_fbdev_create(struct drm_device *drm, int s I915_BO_ALLOC_CONTIGUOUS | I915_BO_ALLOC_USER); } else { - if (i915_bo_fbdev_prefer_stolen(drm, size)) + if (i915_bo_fbdev_prefer_stolen(i915, size)) obj = i915_gem_object_create_stolen(i915, size); else drm_info(drm, "Allocating fbdev: Stolen memory not preferred.\n"); diff --git a/drivers/gpu/drm/i915/i915_bo.h b/drivers/gpu/drm/i915/i915_bo.h index 2a0f3050dd42..39ba62696550 100644 --- a/drivers/gpu/drm/i915/i915_bo.h +++ b/drivers/gpu/drm/i915/i915_bo.h @@ -6,9 +6,9 @@ #include <linux/types.h> -struct drm_device; +struct drm_i915_private; -bool i915_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); +bool i915_bo_fbdev_prefer_stolen(struct drm_i915_private *i915, unsigned int size); extern const struct intel_display_bo_interface i915_display_bo_interface; diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c b/drivers/gpu/drm/i915/i915_initial_plane.c index f4d631a395d0..c1a12bf6b66c 100644 --- a/drivers/gpu/drm/i915/i915_initial_plane.c +++ b/drivers/gpu/drm/i915/i915_initial_plane.c @@ -118,7 +118,7 @@ initial_plane_vma(struct drm_i915_private *i915, if (IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && mem == i915->mm.stolen_region && - !i915_bo_fbdev_prefer_stolen(&i915->drm, size)) { + !i915_bo_fbdev_prefer_stolen(i915, size)) { drm_dbg_kms(&i915->drm, "Initial FB size exceeds half of stolen, discarding\n"); return NULL; } -- 2.47.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 4/5] drm/i915: pass struct drm_i915_private to i915_bo_fbdev_prefer_stolen() 2026-03-18 13:29 ` [PATCH 4/5] drm/i915: pass struct drm_i915_private to i915_bo_fbdev_prefer_stolen() Jani Nikula @ 2026-03-24 23:46 ` Michał Grzelak 0 siblings, 0 replies; 16+ messages in thread From: Michał Grzelak @ 2026-03-24 23:46 UTC (permalink / raw) To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org [-- Attachment #1: Type: text/plain, Size: 313 bytes --] On Wed, 18 Mar 2026, Jani Nikula wrote: > This is i915 core code, use struct drm_i915_private for simplicity. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> Same comment as from patch [3/5] if it applies at all. With it being addressed: Reviewed-by: Michał Grzelak <michal.grzelak@intel.com> BR, Michał ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 5/5] drm/xe: pass struct xe_device to xe_display_bo_fbdev_prefer_stolen() 2026-03-18 13:29 [PATCH 0/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula ` (3 preceding siblings ...) 2026-03-18 13:29 ` [PATCH 4/5] drm/i915: pass struct drm_i915_private to i915_bo_fbdev_prefer_stolen() Jani Nikula @ 2026-03-18 13:29 ` Jani Nikula 2026-03-24 23:47 ` Michał Grzelak 2026-03-18 14:28 ` ✓ i915.CI.BAT: success for drm/{i915,xe}: move fbdev fb calls to parent interface Patchwork 2026-03-19 19:51 ` ✗ i915.CI.Full: failure " Patchwork 6 siblings, 1 reply; 16+ messages in thread From: Jani Nikula @ 2026-03-18 13:29 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula This is xe core code, use struct xe_device for simplicity. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/xe/display/xe_display_bo.c | 5 ++--- drivers/gpu/drm/xe/display/xe_display_bo.h | 4 ++-- drivers/gpu/drm/xe/display/xe_initial_plane.c | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c b/drivers/gpu/drm/xe/display/xe_display_bo.c index 10436edecc35..f420e2ba581e 100644 --- a/drivers/gpu/drm/xe/display/xe_display_bo.c +++ b/drivers/gpu/drm/xe/display/xe_display_bo.c @@ -119,9 +119,8 @@ static u32 xe_display_bo_fbdev_pitch_align(u32 stride) return ALIGN(stride, XE_PAGE_SIZE); } -bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size) +bool xe_display_bo_fbdev_prefer_stolen(struct xe_device *xe, unsigned int size) { - struct xe_device *xe = to_xe_device(drm); struct ttm_resource_manager *stolen; stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); @@ -149,7 +148,7 @@ static struct drm_gem_object *xe_display_bo_fbdev_create(struct drm_device *drm, obj = ERR_PTR(-ENODEV); - if (xe_display_bo_fbdev_prefer_stolen(drm, size)) { + if (xe_display_bo_fbdev_prefer_stolen(xe, size)) { obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.h b/drivers/gpu/drm/xe/display/xe_display_bo.h index 8980e6ecf54a..c72056884ff4 100644 --- a/drivers/gpu/drm/xe/display/xe_display_bo.h +++ b/drivers/gpu/drm/xe/display/xe_display_bo.h @@ -6,9 +6,9 @@ #include <linux/types.h> -struct drm_device; +struct xe_device; -bool xe_display_bo_fbdev_prefer_stolen(struct drm_device *drm, unsigned int size); +bool xe_display_bo_fbdev_prefer_stolen(struct xe_device *xe, unsigned int size); extern const struct intel_display_bo_interface xe_display_bo_interface; diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c index 6e0a22429184..12c09d33292d 100644 --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c @@ -87,7 +87,7 @@ initial_plane_bo(struct xe_device *xe, if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && - !xe_display_bo_fbdev_prefer_stolen(&xe->drm, plane_config->size)) { + !xe_display_bo_fbdev_prefer_stolen(xe, plane_config->size)) { drm_info(&xe->drm, "Initial FB size exceeds half of stolen, discarding\n"); return NULL; } -- 2.47.3 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 5/5] drm/xe: pass struct xe_device to xe_display_bo_fbdev_prefer_stolen() 2026-03-18 13:29 ` [PATCH 5/5] drm/xe: pass struct xe_device to xe_display_bo_fbdev_prefer_stolen() Jani Nikula @ 2026-03-24 23:47 ` Michał Grzelak 0 siblings, 0 replies; 16+ messages in thread From: Michał Grzelak @ 2026-03-24 23:47 UTC (permalink / raw) To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org [-- Attachment #1: Type: text/plain, Size: 305 bytes --] On Wed, 18 Mar 2026, Jani Nikula wrote: > This is xe core code, use struct xe_device for simplicity. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> Same comment as from patch [3/5], if it applies at all. With it being addressed: Reviewed-by: Michał Grzelak <michal.grzelak@intel.com> BR, Michał ^ permalink raw reply [flat|nested] 16+ messages in thread
* ✓ i915.CI.BAT: success for drm/{i915,xe}: move fbdev fb calls to parent interface 2026-03-18 13:29 [PATCH 0/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula ` (4 preceding siblings ...) 2026-03-18 13:29 ` [PATCH 5/5] drm/xe: pass struct xe_device to xe_display_bo_fbdev_prefer_stolen() Jani Nikula @ 2026-03-18 14:28 ` Patchwork 2026-03-19 19:51 ` ✗ i915.CI.Full: failure " Patchwork 6 siblings, 0 replies; 16+ messages in thread From: Patchwork @ 2026-03-18 14:28 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 3813 bytes --] == Series Details == Series: drm/{i915,xe}: move fbdev fb calls to parent interface URL : https://patchwork.freedesktop.org/series/163467/ State : success == Summary == CI Bug Log - changes from CI_DRM_18173 -> Patchwork_163467v1 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/index.html Participating hosts (42 -> 39) ------------------------------ Missing (3): bat-dg2-13 fi-snb-2520m bat-adls-6 Known issues ------------ Here are the changes found in Patchwork_163467v1 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live: - bat-mtlp-8: [PASS][1] -> [DMESG-FAIL][2] ([i915#12061]) +1 other test dmesg-fail [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/bat-mtlp-8/igt@i915_selftest@live.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/bat-mtlp-8/igt@i915_selftest@live.html * igt@i915_selftest@live@workarounds: - bat-dg2-14: [PASS][3] -> [DMESG-FAIL][4] ([i915#12061]) +1 other test dmesg-fail [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/bat-dg2-14/igt@i915_selftest@live@workarounds.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/bat-dg2-14/igt@i915_selftest@live@workarounds.html #### Possible fixes #### * igt@i915_selftest@live: - fi-bsw-n3050: [DMESG-FAIL][5] ([i915#14808]) -> [PASS][6] +1 other test pass [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/fi-bsw-n3050/igt@i915_selftest@live.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/fi-bsw-n3050/igt@i915_selftest@live.html * igt@i915_selftest@live@mman: - bat-atsm-1: [DMESG-FAIL][7] ([i915#14204]) -> [PASS][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/bat-atsm-1/igt@i915_selftest@live@mman.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/bat-atsm-1/igt@i915_selftest@live@mman.html * igt@i915_selftest@live@workarounds: - bat-dg2-9: [DMESG-FAIL][9] ([i915#12061]) -> [PASS][10] +1 other test pass [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/bat-dg2-9/igt@i915_selftest@live@workarounds.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/bat-dg2-9/igt@i915_selftest@live@workarounds.html - bat-arls-6: [DMESG-FAIL][11] ([i915#12061]) -> [PASS][12] +1 other test pass [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/bat-arls-6/igt@i915_selftest@live@workarounds.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/bat-arls-6/igt@i915_selftest@live@workarounds.html #### Warnings #### * igt@i915_selftest@live: - bat-atsm-1: [DMESG-FAIL][13] ([i915#12061] / [i915#14204]) -> [DMESG-FAIL][14] ([i915#12061]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/bat-atsm-1/igt@i915_selftest@live.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/bat-atsm-1/igt@i915_selftest@live.html [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061 [i915#14204]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14204 [i915#14808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14808 Build changes ------------- * Linux: CI_DRM_18173 -> Patchwork_163467v1 CI-20190529: 20190529 CI_DRM_18173: 185629feb8aee7cf88f72d1e67531574f1bea7f5 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_8808: 8808 Patchwork_163467v1: 185629feb8aee7cf88f72d1e67531574f1bea7f5 @ git://anongit.freedesktop.org/gfx-ci/linux == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/index.html [-- Attachment #2: Type: text/html, Size: 5004 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* ✗ i915.CI.Full: failure for drm/{i915,xe}: move fbdev fb calls to parent interface 2026-03-18 13:29 [PATCH 0/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula ` (5 preceding siblings ...) 2026-03-18 14:28 ` ✓ i915.CI.BAT: success for drm/{i915,xe}: move fbdev fb calls to parent interface Patchwork @ 2026-03-19 19:51 ` Patchwork 6 siblings, 0 replies; 16+ messages in thread From: Patchwork @ 2026-03-19 19:51 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 123740 bytes --] == Series Details == Series: drm/{i915,xe}: move fbdev fb calls to parent interface URL : https://patchwork.freedesktop.org/series/163467/ State : failure == Summary == CI Bug Log - changes from CI_DRM_18173_full -> Patchwork_163467v1_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_163467v1_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_163467v1_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them to document this new failure mode, which will reduce false positives in CI. Participating hosts (10 -> 10) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_163467v1_full: ### IGT changes ### #### Possible regressions #### * igt@i915_selftest@live: - shard-dg1: [PASS][1] -> [ABORT][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-16/igt@i915_selftest@live.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-19/igt@i915_selftest@live.html Known issues ------------ Here are the changes found in Patchwork_163467v1_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@api_intel_bb@object-reloc-keep-cache: - shard-dg2: NOTRUN -> [SKIP][3] ([i915#8411]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@api_intel_bb@object-reloc-keep-cache.html * igt@device_reset@unbind-cold-reset-rebind: - shard-mtlp: NOTRUN -> [SKIP][4] ([i915#11078]) [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@device_reset@unbind-cold-reset-rebind.html - shard-dg2: NOTRUN -> [SKIP][5] ([i915#11078]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@device_reset@unbind-cold-reset-rebind.html * igt@drm_buddy@drm_buddy: - shard-tglu-1: NOTRUN -> [SKIP][6] ([i915#15678]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@drm_buddy@drm_buddy.html * igt@gem_ccs@suspend-resume: - shard-tglu: NOTRUN -> [SKIP][7] ([i915#9323]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@gem_ccs@suspend-resume.html * igt@gem_close_race@multigpu-basic-threads: - shard-rkl: NOTRUN -> [SKIP][8] ([i915#7697]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@gem_close_race@multigpu-basic-threads.html * igt@gem_ctx_persistence@heartbeat-hostile: - shard-dg2: NOTRUN -> [SKIP][9] ([i915#8555]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@gem_ctx_persistence@heartbeat-hostile.html - shard-mtlp: NOTRUN -> [SKIP][10] ([i915#8555]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gem_ctx_persistence@heartbeat-hostile.html * igt@gem_eio@suspend: - shard-dg2: [PASS][11] -> [ABORT][12] ([i915#15131]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-3/igt@gem_eio@suspend.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-10/igt@gem_eio@suspend.html * igt@gem_exec_balancer@bonded-false-hang: - shard-dg2: NOTRUN -> [SKIP][13] ([i915#4812]) +1 other test skip [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@gem_exec_balancer@bonded-false-hang.html - shard-mtlp: NOTRUN -> [SKIP][14] ([i915#4812]) [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gem_exec_balancer@bonded-false-hang.html * igt@gem_exec_balancer@parallel-balancer: - shard-tglu: NOTRUN -> [SKIP][15] ([i915#4525]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@gem_exec_balancer@parallel-balancer.html * igt@gem_exec_big@single: - shard-tglu: [PASS][16] -> [FAIL][17] ([i915#15816]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-tglu-4/igt@gem_exec_big@single.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@gem_exec_big@single.html * igt@gem_exec_capture@capture-invisible@smem0: - shard-glk: NOTRUN -> [SKIP][18] ([i915#6334]) +1 other test skip [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk5/igt@gem_exec_capture@capture-invisible@smem0.html * igt@gem_exec_flush@basic-batch-kernel-default-cmd: - shard-dg2: NOTRUN -> [SKIP][19] ([i915#3539] / [i915#4852]) +1 other test skip [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html * igt@gem_exec_reloc@basic-cpu-gtt-noreloc: - shard-rkl: NOTRUN -> [SKIP][20] ([i915#3281]) +5 other tests skip [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@gem_exec_reloc@basic-cpu-gtt-noreloc.html * igt@gem_exec_reloc@basic-wc-cpu: - shard-dg2: NOTRUN -> [SKIP][21] ([i915#3281]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@gem_exec_reloc@basic-wc-cpu.html - shard-mtlp: NOTRUN -> [SKIP][22] ([i915#3281]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gem_exec_reloc@basic-wc-cpu.html * igt@gem_fenced_exec_thrash@too-many-fences: - shard-mtlp: NOTRUN -> [SKIP][23] ([i915#4860]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gem_fenced_exec_thrash@too-many-fences.html - shard-dg2: NOTRUN -> [SKIP][24] ([i915#4860]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@gem_fenced_exec_thrash@too-many-fences.html * igt@gem_lmem_evict@dontneed-evict-race: - shard-tglu: NOTRUN -> [SKIP][25] ([i915#4613] / [i915#7582]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@gem_lmem_evict@dontneed-evict-race.html * igt@gem_lmem_swapping@heavy-verify-random: - shard-tglu: NOTRUN -> [SKIP][26] ([i915#4613]) +1 other test skip [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@gem_lmem_swapping@heavy-verify-random.html * igt@gem_lmem_swapping@massive-random: - shard-tglu-1: NOTRUN -> [SKIP][27] ([i915#4613]) +1 other test skip [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@gem_lmem_swapping@massive-random.html * igt@gem_lmem_swapping@parallel-random-verify: - shard-glk: NOTRUN -> [SKIP][28] ([i915#4613]) [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk5/igt@gem_lmem_swapping@parallel-random-verify.html * igt@gem_lmem_swapping@parallel-random-verify-ccs: - shard-rkl: NOTRUN -> [SKIP][29] ([i915#4613]) +3 other tests skip [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@gem_lmem_swapping@parallel-random-verify-ccs.html * igt@gem_lmem_swapping@verify: - shard-mtlp: NOTRUN -> [SKIP][30] ([i915#4613]) [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gem_lmem_swapping@verify.html * igt@gem_madvise@dontneed-before-pwrite: - shard-mtlp: NOTRUN -> [SKIP][31] ([i915#3282]) [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gem_madvise@dontneed-before-pwrite.html * igt@gem_mmap_wc@coherency: - shard-dg2: NOTRUN -> [SKIP][32] ([i915#4083]) +2 other tests skip [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@gem_mmap_wc@coherency.html - shard-mtlp: NOTRUN -> [SKIP][33] ([i915#4083]) +1 other test skip [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gem_mmap_wc@coherency.html * igt@gem_pread@exhaustion: - shard-glk11: NOTRUN -> [WARN][34] ([i915#2658]) [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk11/igt@gem_pread@exhaustion.html * igt@gem_pread@snoop: - shard-dg2: NOTRUN -> [SKIP][35] ([i915#3282]) +5 other tests skip [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@gem_pread@snoop.html * igt@gem_pwrite@basic-exhaustion: - shard-glk: NOTRUN -> [WARN][36] ([i915#14702] / [i915#2658]) [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk5/igt@gem_pwrite@basic-exhaustion.html * igt@gem_pxp@protected-encrypted-src-copy-not-readible: - shard-dg2: NOTRUN -> [SKIP][37] ([i915#4270]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html * igt@gem_render_copy@y-tiled-to-vebox-yf-tiled: - shard-mtlp: NOTRUN -> [SKIP][38] ([i915#8428]) [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gem_render_copy@y-tiled-to-vebox-yf-tiled.html * igt@gem_render_copy@yf-tiled-to-vebox-yf-tiled: - shard-dg2: NOTRUN -> [SKIP][39] ([i915#5190] / [i915#8428]) +3 other tests skip [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@gem_render_copy@yf-tiled-to-vebox-yf-tiled.html * igt@gem_set_tiling_vs_blt@tiled-to-untiled: - shard-rkl: NOTRUN -> [SKIP][40] ([i915#8411]) +1 other test skip [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html * igt@gem_softpin@noreloc-s3: - shard-rkl: [PASS][41] -> [INCOMPLETE][42] ([i915#13809]) [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@gem_softpin@noreloc-s3.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@gem_softpin@noreloc-s3.html * igt@gem_tiled_partial_pwrite_pread@reads: - shard-rkl: NOTRUN -> [SKIP][43] ([i915#3282]) +3 other tests skip [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@gem_tiled_partial_pwrite_pread@reads.html * igt@gem_tiled_pread_basic@basic: - shard-rkl: NOTRUN -> [SKIP][44] ([i915#15656]) [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@gem_tiled_pread_basic@basic.html * igt@gem_userptr_blits@create-destroy-unsync: - shard-tglu: NOTRUN -> [SKIP][45] ([i915#3297]) +1 other test skip [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@gem_userptr_blits@create-destroy-unsync.html * igt@gem_userptr_blits@dmabuf-sync: - shard-tglu: NOTRUN -> [SKIP][46] ([i915#3297] / [i915#3323]) [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@gem_userptr_blits@dmabuf-sync.html * igt@gem_userptr_blits@map-fixed-invalidate-overlap: - shard-dg2: NOTRUN -> [SKIP][47] ([i915#3297] / [i915#4880]) +1 other test skip [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html - shard-mtlp: NOTRUN -> [SKIP][48] ([i915#3297]) +2 other tests skip [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html * igt@gem_userptr_blits@readonly-pwrite-unsync: - shard-rkl: NOTRUN -> [SKIP][49] ([i915#3297]) [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@gem_userptr_blits@readonly-pwrite-unsync.html * igt@gem_userptr_blits@readonly-unsync: - shard-tglu-1: NOTRUN -> [SKIP][50] ([i915#3297]) +1 other test skip [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@gem_userptr_blits@readonly-unsync.html * igt@gem_workarounds@suspend-resume: - shard-glk11: NOTRUN -> [INCOMPLETE][51] ([i915#13356] / [i915#14586]) [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk11/igt@gem_workarounds@suspend-resume.html * igt@gem_workarounds@suspend-resume-context: - shard-glk11: NOTRUN -> [INCOMPLETE][52] ([i915#13356]) [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk11/igt@gem_workarounds@suspend-resume-context.html * igt@gen9_exec_parse@batch-zero-length: - shard-mtlp: NOTRUN -> [SKIP][53] ([i915#2856]) [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@gen9_exec_parse@batch-zero-length.html - shard-dg2: NOTRUN -> [SKIP][54] ([i915#2856]) [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@gen9_exec_parse@batch-zero-length.html * igt@gen9_exec_parse@bb-oversize: - shard-rkl: NOTRUN -> [SKIP][55] ([i915#2527]) +1 other test skip [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@gen9_exec_parse@bb-oversize.html * igt@gen9_exec_parse@cmd-crossing-page: - shard-tglu: NOTRUN -> [SKIP][56] ([i915#2527] / [i915#2856]) +1 other test skip [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@gen9_exec_parse@cmd-crossing-page.html * igt@gen9_exec_parse@unaligned-jump: - shard-tglu-1: NOTRUN -> [SKIP][57] ([i915#2527] / [i915#2856]) +1 other test skip [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@gen9_exec_parse@unaligned-jump.html * igt@i915_drm_fdinfo@all-busy-check-all: - shard-dg2: NOTRUN -> [SKIP][58] ([i915#14123]) [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@i915_drm_fdinfo@all-busy-check-all.html * igt@i915_module_load@resize-bar: - shard-rkl: NOTRUN -> [SKIP][59] ([i915#6412]) [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@i915_module_load@resize-bar.html - shard-tglu-1: NOTRUN -> [SKIP][60] ([i915#6412]) [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@i915_module_load@resize-bar.html * igt@i915_pm_freq_api@freq-reset-multiple: - shard-tglu-1: NOTRUN -> [SKIP][61] ([i915#8399]) [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@i915_pm_freq_api@freq-reset-multiple.html * igt@i915_pm_freq_mult@media-freq@gt0: - shard-tglu: NOTRUN -> [SKIP][62] ([i915#6590]) +1 other test skip [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@i915_pm_freq_mult@media-freq@gt0.html * igt@i915_pm_rc6_residency@media-rc6-accuracy: - shard-rkl: NOTRUN -> [SKIP][63] +10 other tests skip [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@i915_pm_rc6_residency@media-rc6-accuracy.html * igt@i915_pm_rc6_residency@rc6-accuracy: - shard-dg2: NOTRUN -> [FAIL][64] ([i915#12964]) +1 other test fail [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@i915_pm_rc6_residency@rc6-accuracy.html * igt@i915_pm_rps@reset: - shard-snb: [PASS][65] -> [INCOMPLETE][66] ([i915#13821]) [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-snb6/igt@i915_pm_rps@reset.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-snb6/igt@i915_pm_rps@reset.html * igt@i915_power@sanity: - shard-mtlp: [PASS][67] -> [SKIP][68] ([i915#7984]) [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-mtlp-6/igt@i915_power@sanity.html [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-2/igt@i915_power@sanity.html * igt@i915_selftest@live@gem_contexts: - shard-dg1: [PASS][69] -> [ABORT][70] ([i915#15433]) [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-16/igt@i915_selftest@live@gem_contexts.html [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-19/igt@i915_selftest@live@gem_contexts.html * igt@i915_selftest@live@workarounds: - shard-dg2: [PASS][71] -> [DMESG-FAIL][72] ([i915#12061]) +1 other test dmesg-fail [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-5/igt@i915_selftest@live@workarounds.html [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-3/igt@i915_selftest@live@workarounds.html * igt@i915_suspend@sysfs-reader: - shard-rkl: [PASS][73] -> [INCOMPLETE][74] ([i915#4817]) [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@i915_suspend@sysfs-reader.html [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@i915_suspend@sysfs-reader.html * igt@intel_hwmon@hwmon-write: - shard-mtlp: NOTRUN -> [SKIP][75] ([i915#7707]) [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@intel_hwmon@hwmon-write.html * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy: - shard-dg2: NOTRUN -> [SKIP][76] ([i915#5190]) [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels: - shard-rkl: NOTRUN -> [SKIP][77] ([i915#1769] / [i915#3555]) [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html * igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1: - shard-mtlp: [PASS][78] -> [FAIL][79] ([i915#5956]) +1 other test fail [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-mtlp-5/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-2/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip: - shard-rkl: NOTRUN -> [SKIP][80] ([i915#5286]) +3 other tests skip [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip: - shard-tglu: NOTRUN -> [SKIP][81] ([i915#5286]) +2 other tests skip [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0: - shard-tglu-1: NOTRUN -> [SKIP][82] ([i915#5286]) +3 other tests skip [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html * igt@kms_big_fb@linear-16bpp-rotate-270: - shard-rkl: NOTRUN -> [SKIP][83] ([i915#3638]) [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_big_fb@linear-16bpp-rotate-270.html * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip: - shard-tglu: NOTRUN -> [SKIP][84] ([i915#3828]) [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html * igt@kms_big_fb@x-tiled-16bpp-rotate-90: - shard-dg2: NOTRUN -> [SKIP][85] +9 other tests skip [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html * igt@kms_big_fb@x-tiled-64bpp-rotate-90: - shard-mtlp: NOTRUN -> [SKIP][86] +5 other tests skip [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html * igt@kms_big_fb@y-tiled-64bpp-rotate-0: - shard-dg2: NOTRUN -> [SKIP][87] ([i915#4538] / [i915#5190]) +5 other tests skip [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html * igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs: - shard-mtlp: NOTRUN -> [SKIP][88] ([i915#6095]) +14 other tests skip [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs.html * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs: - shard-dg2: NOTRUN -> [SKIP][89] ([i915#10307] / [i915#6095]) +111 other tests skip [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs.html * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs: - shard-tglu-1: NOTRUN -> [SKIP][90] ([i915#6095]) +34 other tests skip [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs.html * igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1: - shard-glk: NOTRUN -> [SKIP][91] +111 other tests skip [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk5/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1.html * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs: - shard-rkl: NOTRUN -> [SKIP][92] ([i915#12805]) [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-1: - shard-tglu: NOTRUN -> [SKIP][93] ([i915#6095]) +39 other tests skip [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-1.html * igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-d-hdmi-a-1: - shard-dg2: NOTRUN -> [SKIP][94] ([i915#10307] / [i915#10434] / [i915#6095]) [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-d-hdmi-a-1.html * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][95] ([i915#14098] / [i915#6095]) +41 other tests skip [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-1/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2.html * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-1: - shard-dg2: NOTRUN -> [SKIP][96] ([i915#6095]) +47 other tests skip [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-1.html * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs: - shard-tglu: NOTRUN -> [SKIP][97] ([i915#12313]) +1 other test skip [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html - shard-dg2: NOTRUN -> [SKIP][98] ([i915#12313]) [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][99] ([i915#6095]) +65 other tests skip [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-1/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html * igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][100] ([i915#14544] / [i915#6095]) +5 other tests skip [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-2.html * igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][101] ([i915#14098] / [i915#14544] / [i915#6095]) +2 other tests skip [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-2.html * igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3: - shard-dg1: NOTRUN -> [SKIP][102] ([i915#6095]) +139 other tests skip [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-13/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3.html * igt@kms_cdclk@mode-transition-all-outputs: - shard-tglu: NOTRUN -> [SKIP][103] ([i915#3742]) [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@kms_cdclk@mode-transition-all-outputs.html * igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3: - shard-dg2: NOTRUN -> [SKIP][104] ([i915#13783]) +3 other tests skip [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-8/igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3.html * igt@kms_chamelium_edid@hdmi-mode-timings: - shard-tglu: NOTRUN -> [SKIP][105] ([i915#11151] / [i915#7828]) +5 other tests skip [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_chamelium_edid@hdmi-mode-timings.html * igt@kms_chamelium_frames@dp-crc-fast: - shard-dg2: NOTRUN -> [SKIP][106] ([i915#11151] / [i915#7828]) +3 other tests skip [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_chamelium_frames@dp-crc-fast.html * igt@kms_chamelium_frames@hdmi-frame-dump: - shard-rkl: NOTRUN -> [SKIP][107] ([i915#11151] / [i915#7828]) +4 other tests skip [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@kms_chamelium_frames@hdmi-frame-dump.html * igt@kms_chamelium_hpd@dp-hpd-for-each-pipe: - shard-mtlp: NOTRUN -> [SKIP][108] ([i915#11151] / [i915#7828]) [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html * igt@kms_chamelium_hpd@dp-hpd-storm-disable: - shard-tglu-1: NOTRUN -> [SKIP][109] ([i915#11151] / [i915#7828]) +3 other tests skip [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_chamelium_hpd@dp-hpd-storm-disable.html * igt@kms_content_protection@atomic: - shard-dg2: NOTRUN -> [SKIP][110] ([i915#6944] / [i915#7118] / [i915#9424]) [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_content_protection@atomic.html - shard-mtlp: NOTRUN -> [SKIP][111] ([i915#6944] / [i915#9424]) [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_content_protection@atomic.html * igt@kms_content_protection@atomic-dpms-hdcp14: - shard-rkl: NOTRUN -> [SKIP][112] ([i915#6944]) [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_content_protection@atomic-dpms-hdcp14.html * igt@kms_content_protection@dp-mst-lic-type-0: - shard-tglu: NOTRUN -> [SKIP][113] ([i915#15330] / [i915#3116] / [i915#3299]) [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@kms_content_protection@dp-mst-lic-type-0.html * igt@kms_content_protection@mei-interface: - shard-dg2: NOTRUN -> [SKIP][114] ([i915#6944] / [i915#9424]) [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_content_protection@mei-interface.html - shard-tglu: NOTRUN -> [SKIP][115] ([i915#6944] / [i915#9424]) [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_content_protection@mei-interface.html * igt@kms_content_protection@type1: - shard-rkl: NOTRUN -> [SKIP][116] ([i915#6944] / [i915#7118] / [i915#9424]) +1 other test skip [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_content_protection@type1.html - shard-tglu-1: NOTRUN -> [SKIP][117] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424]) [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_content_protection@type1.html * igt@kms_content_protection@uevent: - shard-tglu: NOTRUN -> [SKIP][118] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424]) [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_content_protection@uevent.html * igt@kms_content_protection@uevent-hdcp14: - shard-tglu-1: NOTRUN -> [SKIP][119] ([i915#6944]) [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_content_protection@uevent-hdcp14.html * igt@kms_cursor_crc@cursor-offscreen-32x10: - shard-tglu: NOTRUN -> [SKIP][120] ([i915#3555]) [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_cursor_crc@cursor-offscreen-32x10.html * igt@kms_cursor_crc@cursor-onscreen-512x170: - shard-rkl: NOTRUN -> [SKIP][121] ([i915#13049]) [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_cursor_crc@cursor-onscreen-512x170.html - shard-tglu-1: NOTRUN -> [SKIP][122] ([i915#13049]) [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-512x170.html * igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1: - shard-tglu: [PASS][123] -> [FAIL][124] ([i915#13566]) +1 other test fail [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-tglu-10/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-4/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html * igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-2: - shard-rkl: NOTRUN -> [FAIL][125] ([i915#13566]) [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-2.html * igt@kms_cursor_crc@cursor-random-512x170: - shard-dg2: NOTRUN -> [SKIP][126] ([i915#13049]) +1 other test skip [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_cursor_crc@cursor-random-512x170.html - shard-tglu: NOTRUN -> [SKIP][127] ([i915#13049]) [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_cursor_crc@cursor-random-512x170.html * igt@kms_cursor_crc@cursor-rapid-movement-32x10: - shard-rkl: NOTRUN -> [SKIP][128] ([i915#3555]) +5 other tests skip [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html * igt@kms_cursor_crc@cursor-sliding-512x170: - shard-mtlp: NOTRUN -> [SKIP][129] ([i915#13049]) [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_cursor_crc@cursor-sliding-512x170.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic: - shard-dg2: NOTRUN -> [SKIP][130] ([i915#4103] / [i915#4213]) [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html - shard-tglu: NOTRUN -> [SKIP][131] ([i915#4103]) [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions: - shard-dg2: NOTRUN -> [SKIP][132] ([i915#13046] / [i915#5354]) [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html * igt@kms_cursor_legacy@cursorb-vs-flipa-legacy: - shard-tglu-1: NOTRUN -> [SKIP][133] +34 other tests skip [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size: - shard-glk: NOTRUN -> [FAIL][134] ([i915#15804]) [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html * igt@kms_dirtyfb@psr-dirtyfb-ioctl: - shard-tglu: NOTRUN -> [SKIP][135] ([i915#9723]) [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html * igt@kms_display_modes@extended-mode-basic: - shard-tglu: NOTRUN -> [SKIP][136] ([i915#13691]) [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@kms_display_modes@extended-mode-basic.html * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][137] ([i915#3804]) [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-3/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2.html * igt@kms_dp_aux_dev: - shard-tglu-1: NOTRUN -> [SKIP][138] ([i915#1257]) [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_dp_aux_dev.html * igt@kms_dp_link_training@uhbr-mst: - shard-dg2: NOTRUN -> [SKIP][139] ([i915#13748]) [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_dp_link_training@uhbr-mst.html - shard-tglu: NOTRUN -> [SKIP][140] ([i915#13748]) [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_dp_link_training@uhbr-mst.html * igt@kms_dsc@dsc-basic: - shard-rkl: NOTRUN -> [SKIP][141] ([i915#3555] / [i915#3840]) +1 other test skip [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_dsc@dsc-basic.html - shard-tglu-1: NOTRUN -> [SKIP][142] ([i915#3555] / [i915#3840]) [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_dsc@dsc-basic.html * igt@kms_dsc@dsc-fractional-bpp-with-bpc: - shard-tglu: NOTRUN -> [SKIP][143] ([i915#3840]) [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html * igt@kms_dsc@dsc-with-bpc-formats: - shard-dg2: NOTRUN -> [SKIP][144] ([i915#3555] / [i915#3840]) [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_dsc@dsc-with-bpc-formats.html - shard-mtlp: NOTRUN -> [SKIP][145] ([i915#3555] / [i915#3840]) [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_dsc@dsc-with-bpc-formats.html * igt@kms_fbcon_fbt@fbc-suspend: - shard-glk: NOTRUN -> [INCOMPLETE][146] ([i915#9878]) [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk5/igt@kms_fbcon_fbt@fbc-suspend.html * igt@kms_fbcon_fbt@psr: - shard-tglu: NOTRUN -> [SKIP][147] ([i915#3469]) [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_fbcon_fbt@psr.html * igt@kms_fbcon_fbt@psr-suspend: - shard-rkl: NOTRUN -> [SKIP][148] ([i915#3955]) [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_fbcon_fbt@psr-suspend.html - shard-tglu-1: NOTRUN -> [SKIP][149] ([i915#3469]) [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_fbcon_fbt@psr-suspend.html * igt@kms_flip@2x-absolute-wf_vblank: - shard-tglu: NOTRUN -> [SKIP][150] ([i915#3637] / [i915#9934]) +5 other tests skip [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_flip@2x-absolute-wf_vblank.html * igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible: - shard-rkl: NOTRUN -> [SKIP][151] ([i915#9934]) [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible.html * igt@kms_flip@2x-flip-vs-fences-interruptible: - shard-dg2: NOTRUN -> [SKIP][152] ([i915#8381]) [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_flip@2x-flip-vs-fences-interruptible.html - shard-mtlp: NOTRUN -> [SKIP][153] ([i915#8381]) [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_flip@2x-flip-vs-fences-interruptible.html * igt@kms_flip@2x-flip-vs-suspend: - shard-glk: NOTRUN -> [INCOMPLETE][154] ([i915#12314] / [i915#12745] / [i915#4839] / [i915#6113]) [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk5/igt@kms_flip@2x-flip-vs-suspend.html * igt@kms_flip@2x-flip-vs-suspend-interruptible: - shard-snb: [PASS][155] -> [TIMEOUT][156] ([i915#14033] / [i915#14350]) [155]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-snb7/igt@kms_flip@2x-flip-vs-suspend-interruptible.html [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible.html * igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1: - shard-snb: [PASS][157] -> [TIMEOUT][158] ([i915#14033]) [157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-snb7/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html * igt@kms_flip@2x-flip-vs-suspend@ab-hdmi-a1-hdmi-a2: - shard-glk: NOTRUN -> [INCOMPLETE][159] ([i915#12314] / [i915#4839] / [i915#6113]) [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk5/igt@kms_flip@2x-flip-vs-suspend@ab-hdmi-a1-hdmi-a2.html * igt@kms_flip@2x-flip-vs-wf_vblank-interruptible: - shard-tglu-1: NOTRUN -> [SKIP][160] ([i915#3637] / [i915#9934]) +1 other test skip [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html * igt@kms_flip@2x-modeset-vs-vblank-race: - shard-dg2: NOTRUN -> [SKIP][161] ([i915#9934]) +3 other tests skip [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_flip@2x-modeset-vs-vblank-race.html * igt@kms_flip@2x-plain-flip: - shard-mtlp: NOTRUN -> [SKIP][162] ([i915#3637] / [i915#9934]) [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_flip@2x-plain-flip.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling: - shard-tglu-1: NOTRUN -> [SKIP][163] ([i915#15643]) +1 other test skip [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling: - shard-dg2: NOTRUN -> [SKIP][164] ([i915#15643]) +1 other test skip [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html - shard-tglu: NOTRUN -> [SKIP][165] ([i915#15643]) +2 other tests skip [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling: - shard-dg2: NOTRUN -> [SKIP][166] ([i915#15643] / [i915#5190]) [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling: - shard-rkl: NOTRUN -> [SKIP][167] ([i915#15643]) +1 other test skip [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling: - shard-snb: NOTRUN -> [SKIP][168] +18 other tests skip [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-snb5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html - shard-mtlp: NOTRUN -> [SKIP][169] ([i915#15643]) [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-render: - shard-dg2: [PASS][170] -> [FAIL][171] ([i915#15389]) [170]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-render.html [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-render.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt: - shard-mtlp: NOTRUN -> [SKIP][172] ([i915#1825]) +6 other tests skip [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-gtt: - shard-mtlp: NOTRUN -> [SKIP][173] ([i915#8708]) [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-blt: - shard-dg2: NOTRUN -> [SKIP][174] ([i915#15102]) [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt: - shard-glk10: NOTRUN -> [SKIP][175] +192 other tests skip [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk10/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render: - shard-rkl: NOTRUN -> [SKIP][176] ([i915#1825]) +24 other tests skip [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt: - shard-dg2: NOTRUN -> [SKIP][177] ([i915#5354]) +13 other tests skip [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc: - shard-tglu: NOTRUN -> [SKIP][178] +45 other tests skip [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsr-modesetfrombusy: - shard-tglu: NOTRUN -> [SKIP][179] ([i915#15102]) +12 other tests skip [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_frontbuffer_tracking@fbcpsr-modesetfrombusy.html * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc: - shard-rkl: NOTRUN -> [SKIP][180] ([i915#15102] / [i915#3023]) +9 other tests skip [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsr-tiling-4: - shard-tglu-1: NOTRUN -> [SKIP][181] ([i915#5439]) [181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html * igt@kms_frontbuffer_tracking@pipe-fbc-rte: - shard-dg2: NOTRUN -> [SKIP][182] ([i915#9766]) [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt: - shard-tglu-1: NOTRUN -> [SKIP][183] ([i915#15102]) +8 other tests skip [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-wc: - shard-dg2: NOTRUN -> [SKIP][184] ([i915#15104]) [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-pwrite: - shard-rkl: NOTRUN -> [SKIP][185] ([i915#15102]) +1 other test skip [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-pwrite.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu: - shard-dg2: NOTRUN -> [SKIP][186] ([i915#10433] / [i915#15102] / [i915#3458]) [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc: - shard-dg2: NOTRUN -> [SKIP][187] ([i915#8708]) +9 other tests skip [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-modesetfrombusy: - shard-glk11: NOTRUN -> [SKIP][188] +58 other tests skip [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk11/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-blt: - shard-dg2: NOTRUN -> [SKIP][189] ([i915#15102] / [i915#3458]) +6 other tests skip [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-blt.html * igt@kms_hdmi_inject@inject-audio: - shard-mtlp: [PASS][190] -> [SKIP][191] ([i915#15725]) [190]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-mtlp-3/igt@kms_hdmi_inject@inject-audio.html [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-1/igt@kms_hdmi_inject@inject-audio.html * igt@kms_hdr@invalid-hdr: - shard-tglu: NOTRUN -> [SKIP][192] ([i915#3555] / [i915#8228]) [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_hdr@invalid-hdr.html * igt@kms_joiner@basic-big-joiner: - shard-tglu: NOTRUN -> [SKIP][193] ([i915#15460]) [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_joiner@basic-big-joiner.html * igt@kms_joiner@basic-force-big-joiner: - shard-tglu-1: NOTRUN -> [SKIP][194] ([i915#15459]) [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_joiner@basic-force-big-joiner.html * igt@kms_joiner@basic-force-ultra-joiner: - shard-rkl: NOTRUN -> [SKIP][195] ([i915#15458]) +1 other test skip [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_joiner@basic-force-ultra-joiner.html - shard-tglu-1: NOTRUN -> [SKIP][196] ([i915#15458]) +1 other test skip [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_joiner@basic-force-ultra-joiner.html * igt@kms_multipipe_modeset@basic-max-pipe-crc-check: - shard-rkl: NOTRUN -> [SKIP][197] ([i915#15815]) [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html - shard-tglu-1: NOTRUN -> [SKIP][198] ([i915#15815]) [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html * igt@kms_panel_fitting@legacy: - shard-rkl: NOTRUN -> [SKIP][199] ([i915#6301]) [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_panel_fitting@legacy.html - shard-tglu-1: NOTRUN -> [SKIP][200] ([i915#6301]) [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_panel_fitting@legacy.html * igt@kms_pipe_crc_basic@suspend-read-crc: - shard-glk: NOTRUN -> [INCOMPLETE][201] ([i915#12756] / [i915#13409] / [i915#13476]) [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk1/igt@kms_pipe_crc_basic@suspend-read-crc.html * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-2: - shard-glk: NOTRUN -> [INCOMPLETE][202] ([i915#13409] / [i915#13476]) [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk1/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-2.html * igt@kms_pipe_stress@stress-xrgb8888-4tiled: - shard-rkl: NOTRUN -> [SKIP][203] ([i915#14712]) [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_pipe_stress@stress-xrgb8888-4tiled.html * igt@kms_pipe_stress@stress-xrgb8888-ytiled: - shard-dg2: NOTRUN -> [SKIP][204] ([i915#13705]) [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html - shard-mtlp: NOTRUN -> [SKIP][205] ([i915#13705]) [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html * igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping: - shard-tglu-1: NOTRUN -> [SKIP][206] ([i915#15709]) +1 other test skip [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping.html * igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier-source-clamping: - shard-tglu: NOTRUN -> [SKIP][207] ([i915#15709]) +1 other test skip [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier-source-clamping.html * igt@kms_plane@pixel-format-4-tiled-modifier: - shard-rkl: NOTRUN -> [SKIP][208] ([i915#15709]) [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_plane@pixel-format-4-tiled-modifier.html * igt@kms_plane@pixel-format-y-tiled-ccs-modifier: - shard-dg2: NOTRUN -> [SKIP][209] ([i915#15709]) +1 other test skip [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html - shard-mtlp: NOTRUN -> [SKIP][210] ([i915#15709]) [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7: - shard-tglu-1: NOTRUN -> [SKIP][211] ([i915#15608]) +1 other test skip [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7.html * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier: - shard-dg1: [PASS][212] -> [DMESG-WARN][213] ([i915#4423]) +1 other test dmesg-warn [212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-17/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier.html [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-13/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier.html * igt@kms_plane_alpha_blend@alpha-basic: - shard-glk10: NOTRUN -> [FAIL][214] ([i915#12178]) [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk10/igt@kms_plane_alpha_blend@alpha-basic.html * igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1: - shard-glk10: NOTRUN -> [FAIL][215] ([i915#7862]) +1 other test fail [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk10/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1.html * igt@kms_plane_lowres@tiling-y: - shard-dg2: NOTRUN -> [SKIP][216] ([i915#8821]) [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_plane_lowres@tiling-y.html - shard-mtlp: NOTRUN -> [SKIP][217] ([i915#3555] / [i915#8821]) [217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_plane_lowres@tiling-y.html * igt@kms_plane_multiple@2x-tiling-y: - shard-tglu: NOTRUN -> [SKIP][218] ([i915#13958]) [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@kms_plane_multiple@2x-tiling-y.html * igt@kms_plane_multiple@2x-tiling-yf: - shard-tglu-1: NOTRUN -> [SKIP][219] ([i915#13958]) [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_plane_multiple@2x-tiling-yf.html - shard-rkl: NOTRUN -> [SKIP][220] ([i915#13958]) [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_plane_multiple@2x-tiling-yf.html * igt@kms_plane_scaling@intel-max-src-size: - shard-rkl: NOTRUN -> [SKIP][221] ([i915#6953]) [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@kms_plane_scaling@intel-max-src-size.html * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation: - shard-rkl: NOTRUN -> [SKIP][222] ([i915#15329] / [i915#3555]) [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html - shard-tglu-1: NOTRUN -> [SKIP][223] ([i915#15329] / [i915#3555]) [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/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][224] ([i915#15329]) +2 other tests skip [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html - shard-tglu-1: NOTRUN -> [SKIP][225] ([i915#15329]) +3 other tests skip [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html * igt@kms_pm_backlight@fade: - shard-tglu: NOTRUN -> [SKIP][226] ([i915#9812]) +1 other test skip [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_pm_backlight@fade.html * igt@kms_pm_dc@dc6-dpms: - shard-dg2: NOTRUN -> [SKIP][227] ([i915#15751]) [227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_pm_dc@dc6-dpms.html * igt@kms_pm_dc@dc6-psr: - shard-rkl: NOTRUN -> [SKIP][228] ([i915#9685]) [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_pm_dc@dc6-psr.html * igt@kms_pm_dc@dc9-dpms: - shard-tglu-1: NOTRUN -> [SKIP][229] ([i915#15739]) [229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_pm_dc@dc9-dpms.html * igt@kms_pm_lpsp@screens-disabled: - shard-dg2: NOTRUN -> [SKIP][230] ([i915#8430]) [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_pm_lpsp@screens-disabled.html - shard-tglu: NOTRUN -> [SKIP][231] ([i915#8430]) [231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_pm_lpsp@screens-disabled.html * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp: - shard-rkl: [PASS][232] -> [SKIP][233] ([i915#15073]) +1 other test skip [232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html [233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html * igt@kms_pm_rpm@fences-dpms: - shard-dg2: NOTRUN -> [SKIP][234] ([i915#4077]) +4 other tests skip [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_pm_rpm@fences-dpms.html - shard-mtlp: NOTRUN -> [SKIP][235] ([i915#4077]) +1 other test skip [235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_pm_rpm@fences-dpms.html * igt@kms_pm_rpm@modeset-lpsp-stress: - shard-dg2: [PASS][236] -> [SKIP][237] ([i915#15073]) +2 other tests skip [236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-4/igt@kms_pm_rpm@modeset-lpsp-stress.html [237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-6/igt@kms_pm_rpm@modeset-lpsp-stress.html * igt@kms_pm_rpm@modeset-non-lpsp: - shard-dg1: [PASS][238] -> [SKIP][239] ([i915#15073]) [238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-19/igt@kms_pm_rpm@modeset-non-lpsp.html [239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-15/igt@kms_pm_rpm@modeset-non-lpsp.html * igt@kms_prime@basic-crc-hybrid: - shard-rkl: NOTRUN -> [SKIP][240] ([i915#6524]) [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_prime@basic-crc-hybrid.html * igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf: - shard-glk: NOTRUN -> [SKIP][241] ([i915#11520]) +3 other tests skip [241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk5/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf.html - shard-dg2: NOTRUN -> [SKIP][242] ([i915#11520]) +4 other tests skip [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf.html * igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area: - shard-rkl: NOTRUN -> [SKIP][243] ([i915#11520]) +3 other tests skip [243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html * igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf: - shard-glk10: NOTRUN -> [SKIP][244] ([i915#11520]) +7 other tests skip [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk10/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf: - shard-glk11: NOTRUN -> [SKIP][245] ([i915#11520]) [245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk11/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf: - shard-mtlp: NOTRUN -> [SKIP][246] ([i915#12316]) [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf.html - shard-snb: NOTRUN -> [SKIP][247] ([i915#11520]) [247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-snb5/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf.html * igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf: - shard-tglu-1: NOTRUN -> [SKIP][248] ([i915#11520]) +2 other tests skip [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf.html * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb: - shard-tglu: NOTRUN -> [SKIP][249] ([i915#11520]) +6 other tests skip [249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html * igt@kms_psr2_su@page_flip-xrgb8888: - shard-rkl: NOTRUN -> [SKIP][250] ([i915#9683]) [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_psr2_su@page_flip-xrgb8888.html - shard-tglu-1: NOTRUN -> [SKIP][251] ([i915#9683]) [251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_psr2_su@page_flip-xrgb8888.html * igt@kms_psr@pr-dpms: - shard-mtlp: NOTRUN -> [SKIP][252] ([i915#9688]) [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_psr@pr-dpms.html * igt@kms_psr@pr-sprite-plane-move: - shard-tglu: NOTRUN -> [SKIP][253] ([i915#9732]) +13 other tests skip [253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-10/igt@kms_psr@pr-sprite-plane-move.html * igt@kms_psr@psr2-primary-mmap-gtt: - shard-dg2: NOTRUN -> [SKIP][254] ([i915#1072] / [i915#9732]) +8 other tests skip [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_psr@psr2-primary-mmap-gtt.html * igt@kms_psr@psr2-primary-mmap-gtt@edp-1: - shard-mtlp: NOTRUN -> [SKIP][255] ([i915#4077] / [i915#9688]) +1 other test skip [255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_psr@psr2-primary-mmap-gtt@edp-1.html * igt@kms_psr@psr2-sprite-mmap-cpu: - shard-rkl: NOTRUN -> [SKIP][256] ([i915#1072] / [i915#9732]) +12 other tests skip [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@kms_psr@psr2-sprite-mmap-cpu.html * igt@kms_psr@psr2-sprite-mmap-gtt: - shard-tglu-1: NOTRUN -> [SKIP][257] ([i915#9732]) +9 other tests skip [257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_psr@psr2-sprite-mmap-gtt.html * igt@kms_psr_stress_test@flip-primary-invalidate-overlay: - shard-tglu: NOTRUN -> [SKIP][258] ([i915#9685]) +1 other test skip [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html * igt@kms_psr_stress_test@invalidate-primary-flip-overlay: - shard-dg2: NOTRUN -> [SKIP][259] ([i915#9685]) [259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90: - shard-tglu: NOTRUN -> [SKIP][260] ([i915#5289]) +1 other test skip [260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-3/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html * igt@kms_scaling_modes@scaling-mode-none: - shard-dg2: NOTRUN -> [SKIP][261] ([i915#3555]) +1 other test skip [261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_scaling_modes@scaling-mode-none.html - shard-mtlp: NOTRUN -> [SKIP][262] ([i915#3555] / [i915#5030] / [i915#9041]) [262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_scaling_modes@scaling-mode-none.html * igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1: - shard-mtlp: NOTRUN -> [SKIP][263] ([i915#5030]) +2 other tests skip [263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1.html * igt@kms_scaling_modes@scaling-mode-none@pipe-d-edp-1: - shard-mtlp: NOTRUN -> [SKIP][264] ([i915#5030] / [i915#9041]) [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_scaling_modes@scaling-mode-none@pipe-d-edp-1.html * igt@kms_tiled_display@basic-test-pattern-with-chamelium: - shard-tglu: NOTRUN -> [SKIP][265] ([i915#8623]) [265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html - shard-dg2: NOTRUN -> [SKIP][266] ([i915#8623]) [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html * igt@kms_vblank@ts-continuation-dpms-suspend: - shard-rkl: [PASS][267] -> [INCOMPLETE][268] ([i915#12276]) +1 other test incomplete [267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-2/igt@kms_vblank@ts-continuation-dpms-suspend.html [268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-3/igt@kms_vblank@ts-continuation-dpms-suspend.html * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1: - shard-glk: NOTRUN -> [INCOMPLETE][269] ([i915#12276]) +1 other test incomplete [269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk9/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1.html * igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-1: - shard-glk: [PASS][270] -> [INCOMPLETE][271] ([i915#12276]) [270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-glk9/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-1.html [271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk6/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-1.html * igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2: - shard-rkl: NOTRUN -> [INCOMPLETE][272] ([i915#12276]) +1 other test incomplete [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2.html * igt@kms_vrr@flip-basic: - shard-rkl: NOTRUN -> [SKIP][273] ([i915#15243] / [i915#3555]) +1 other test skip [273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_vrr@flip-basic.html - shard-tglu-1: NOTRUN -> [SKIP][274] ([i915#3555]) +2 other tests skip [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_vrr@flip-basic.html * igt@kms_vrr@flip-basic-fastset: - shard-dg2: NOTRUN -> [SKIP][275] ([i915#9906]) [275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_vrr@flip-basic-fastset.html - shard-mtlp: NOTRUN -> [SKIP][276] ([i915#8808] / [i915#9906]) [276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@kms_vrr@flip-basic-fastset.html * igt@kms_vrr@max-min: - shard-rkl: NOTRUN -> [SKIP][277] ([i915#9906]) +1 other test skip [277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@kms_vrr@max-min.html * igt@kms_vrr@seamless-rr-switch-drrs: - shard-tglu-1: NOTRUN -> [SKIP][278] ([i915#9906]) [278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@kms_vrr@seamless-rr-switch-drrs.html * igt@perf_pmu@most-busy-idle-check-all: - shard-rkl: [PASS][279] -> [FAIL][280] ([i915#4349]) +1 other test fail [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-4/igt@perf_pmu@most-busy-idle-check-all.html [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@perf_pmu@most-busy-idle-check-all.html * igt@perf_pmu@rc6@other-idle-gt0: - shard-rkl: NOTRUN -> [SKIP][281] ([i915#8516]) [281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@perf_pmu@rc6@other-idle-gt0.html * igt@prime_vgem@basic-fence-read: - shard-dg2: NOTRUN -> [SKIP][282] ([i915#3291] / [i915#3708]) [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@prime_vgem@basic-fence-read.html * igt@prime_vgem@basic-read: - shard-rkl: NOTRUN -> [SKIP][283] ([i915#3291] / [i915#3708]) [283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@prime_vgem@basic-read.html * igt@sriov_basic@enable-vfs-autoprobe-off: - shard-dg2: NOTRUN -> [SKIP][284] ([i915#9917]) [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@sriov_basic@enable-vfs-autoprobe-off.html * igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-6: - shard-tglu: NOTRUN -> [FAIL][285] ([i915#12910]) +9 other tests fail [285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-8/igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-6.html * igt@sriov_basic@enable-vfs-autoprobe-on: - shard-rkl: NOTRUN -> [SKIP][286] ([i915#9917]) [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@sriov_basic@enable-vfs-autoprobe-on.html * igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-7: - shard-tglu-1: NOTRUN -> [FAIL][287] ([i915#12910]) +9 other tests fail [287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-1/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-7.html #### Possible fixes #### * igt@gem_ctx_isolation@preservation-s3: - shard-rkl: [INCOMPLETE][288] ([i915#13356]) -> [PASS][289] +2 other tests pass [288]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@gem_ctx_isolation@preservation-s3.html [289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@gem_ctx_isolation@preservation-s3.html * igt@gem_lmem_swapping@smem-oom: - shard-dg2: [FAIL][290] ([i915#15734]) -> [PASS][291] [290]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-8/igt@gem_lmem_swapping@smem-oom.html [291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-1/igt@gem_lmem_swapping@smem-oom.html - shard-dg1: [FAIL][292] ([i915#15734]) -> [PASS][293] [292]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-15/igt@gem_lmem_swapping@smem-oom.html [293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-14/igt@gem_lmem_swapping@smem-oom.html * igt@gem_lmem_swapping@smem-oom@lmem0: - shard-dg2: [CRASH][294] ([i915#5493]) -> [PASS][295] [294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-8/igt@gem_lmem_swapping@smem-oom@lmem0.html [295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-1/igt@gem_lmem_swapping@smem-oom@lmem0.html - shard-dg1: [CRASH][296] ([i915#5493]) -> [PASS][297] [296]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-15/igt@gem_lmem_swapping@smem-oom@lmem0.html [297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-14/igt@gem_lmem_swapping@smem-oom@lmem0.html * igt@kms_atomic_transition@plane-all-modeset-transition-fencing: - shard-dg2: [FAIL][298] ([i915#5956]) -> [PASS][299] +1 other test pass [298]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-8/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html [299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-7/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html * igt@kms_big_fb@4-tiled-64bpp-rotate-180: - shard-mtlp: [FAIL][300] ([i915#15733] / [i915#5138]) -> [PASS][301] [300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-mtlp-3/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html [301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-8/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html * igt@kms_color@deep-color: - shard-rkl: [SKIP][302] ([i915#12655] / [i915#3555]) -> [PASS][303] [302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_color@deep-color.html [303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_color@deep-color.html * igt@kms_cursor_crc@cursor-sliding-256x85: - shard-rkl: [FAIL][304] ([i915#13566]) -> [PASS][305] [304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_cursor_crc@cursor-sliding-256x85.html [305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@kms_cursor_crc@cursor-sliding-256x85.html - shard-tglu: [FAIL][306] ([i915#13566]) -> [PASS][307] +1 other test pass [306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-tglu-7/igt@kms_cursor_crc@cursor-sliding-256x85.html [307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-5/igt@kms_cursor_crc@cursor-sliding-256x85.html * igt@kms_force_connector_basic@prune-stale-modes: - shard-mtlp: [SKIP][308] ([i915#15672]) -> [PASS][309] [308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-mtlp-1/igt@kms_force_connector_basic@prune-stale-modes.html [309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-4/igt@kms_force_connector_basic@prune-stale-modes.html * igt@kms_joiner@invalid-modeset-force-big-joiner: - shard-dg2: [SKIP][310] ([i915#15459]) -> [PASS][311] [310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-3/igt@kms_joiner@invalid-modeset-force-big-joiner.html [311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-10/igt@kms_joiner@invalid-modeset-force-big-joiner.html * igt@kms_lease@setcrtc-implicit-plane: - shard-dg1: [DMESG-WARN][312] ([i915#4423]) -> [PASS][313] [312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-12/igt@kms_lease@setcrtc-implicit-plane.html [313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-17/igt@kms_lease@setcrtc-implicit-plane.html * igt@kms_pipe_crc_basic@suspend-read-crc: - shard-rkl: [INCOMPLETE][314] ([i915#12756] / [i915#13476]) -> [PASS][315] [314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_pipe_crc_basic@suspend-read-crc.html [315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_pipe_crc_basic@suspend-read-crc.html * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-2: - shard-rkl: [INCOMPLETE][316] ([i915#13476]) -> [PASS][317] [316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-2.html [317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-2.html * igt@kms_pm_rpm@modeset-non-lpsp-stress: - shard-dg1: [SKIP][318] ([i915#15073]) -> [PASS][319] [318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-14/igt@kms_pm_rpm@modeset-non-lpsp-stress.html [319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-12/igt@kms_pm_rpm@modeset-non-lpsp-stress.html * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait: - shard-dg2: [SKIP][320] ([i915#15073]) -> [PASS][321] [320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html [321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-6/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html * igt@kms_pm_rpm@system-suspend-idle: - shard-rkl: [INCOMPLETE][322] ([i915#14419]) -> [PASS][323] [322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_pm_rpm@system-suspend-idle.html [323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_pm_rpm@system-suspend-idle.html * igt@sysfs_timeslice_duration@duration@vecs0: - shard-mtlp: [INCOMPLETE][324] -> [PASS][325] +1 other test pass [324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-mtlp-5/igt@sysfs_timeslice_duration@duration@vecs0.html [325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-5/igt@sysfs_timeslice_duration@duration@vecs0.html #### Warnings #### * igt@api_intel_bb@object-reloc-purge-cache: - shard-rkl: [SKIP][326] ([i915#14544] / [i915#8411]) -> [SKIP][327] ([i915#8411]) [326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@api_intel_bb@object-reloc-purge-cache.html [327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@api_intel_bb@object-reloc-purge-cache.html * igt@gem_ccs@ctrl-surf-copy: - shard-rkl: [SKIP][328] ([i915#14544] / [i915#3555] / [i915#9323]) -> [SKIP][329] ([i915#3555] / [i915#9323]) [328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@gem_ccs@ctrl-surf-copy.html [329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@gem_ccs@ctrl-surf-copy.html * igt@gem_close_race@multigpu-basic-process: - shard-rkl: [SKIP][330] ([i915#14544] / [i915#7697]) -> [SKIP][331] ([i915#7697]) [330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@gem_close_race@multigpu-basic-process.html [331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@gem_close_race@multigpu-basic-process.html * igt@gem_exec_balancer@parallel-ordering: - shard-rkl: [SKIP][332] ([i915#14544] / [i915#4525]) -> [SKIP][333] ([i915#4525]) +1 other test skip [332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@gem_exec_balancer@parallel-ordering.html [333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@gem_exec_balancer@parallel-ordering.html * igt@gem_exec_reloc@basic-scanout: - shard-rkl: [SKIP][334] ([i915#14544] / [i915#3281]) -> [SKIP][335] ([i915#3281]) +1 other test skip [334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@gem_exec_reloc@basic-scanout.html [335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@gem_exec_reloc@basic-scanout.html * igt@gem_exec_reloc@basic-write-cpu: - shard-rkl: [SKIP][336] ([i915#3281]) -> [SKIP][337] ([i915#14544] / [i915#3281]) +3 other tests skip [336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-2/igt@gem_exec_reloc@basic-write-cpu.html [337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@gem_exec_reloc@basic-write-cpu.html * igt@gem_lmem_swapping@heavy-multi: - shard-rkl: [SKIP][338] ([i915#14544] / [i915#4613]) -> [SKIP][339] ([i915#4613]) [338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@gem_lmem_swapping@heavy-multi.html [339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@gem_lmem_swapping@heavy-multi.html * igt@gem_lmem_swapping@heavy-verify-multi: - shard-rkl: [SKIP][340] ([i915#4613]) -> [SKIP][341] ([i915#14544] / [i915#4613]) [340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@gem_lmem_swapping@heavy-verify-multi.html [341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@gem_lmem_swapping@heavy-verify-multi.html * igt@gem_partial_pwrite_pread@writes-after-reads-snoop: - shard-rkl: [SKIP][342] ([i915#3282]) -> [SKIP][343] ([i915#14544] / [i915#3282]) [342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@gem_partial_pwrite_pread@writes-after-reads-snoop.html [343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads-snoop.html * igt@gem_partial_pwrite_pread@writes-after-reads-uncached: - shard-rkl: [SKIP][344] ([i915#14544] / [i915#3282]) -> [SKIP][345] ([i915#3282]) +2 other tests skip [344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html [345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html * igt@gem_userptr_blits@dmabuf-unsync: - shard-rkl: [SKIP][346] ([i915#14544] / [i915#3297]) -> [SKIP][347] ([i915#3297]) +2 other tests skip [346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@gem_userptr_blits@dmabuf-unsync.html [347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@gem_userptr_blits@dmabuf-unsync.html * igt@gen9_exec_parse@secure-batches: - shard-rkl: [SKIP][348] ([i915#14544] / [i915#2527]) -> [SKIP][349] ([i915#2527]) +1 other test skip [348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@gen9_exec_parse@secure-batches.html [349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@gen9_exec_parse@secure-batches.html * igt@gen9_exec_parse@shadow-peek: - shard-rkl: [SKIP][350] ([i915#2527]) -> [SKIP][351] ([i915#14544] / [i915#2527]) +3 other tests skip [350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@gen9_exec_parse@shadow-peek.html [351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@gen9_exec_parse@shadow-peek.html * igt@i915_pm_rc6_residency@rc6-idle: - shard-rkl: [SKIP][352] ([i915#14498]) -> [SKIP][353] ([i915#14498] / [i915#14544]) [352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@i915_pm_rc6_residency@rc6-idle.html [353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@i915_pm_rc6_residency@rc6-idle.html * igt@kms_big_fb@4-tiled-32bpp-rotate-180: - shard-rkl: [SKIP][354] ([i915#14544] / [i915#5286]) -> [SKIP][355] ([i915#5286]) +1 other test skip [354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html [355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html * igt@kms_big_fb@4-tiled-8bpp-rotate-270: - shard-rkl: [SKIP][356] ([i915#5286]) -> [SKIP][357] ([i915#14544] / [i915#5286]) [356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html [357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html * igt@kms_big_fb@linear-32bpp-rotate-90: - shard-rkl: [SKIP][358] ([i915#3638]) -> [SKIP][359] ([i915#14544] / [i915#3638]) +1 other test skip [358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_big_fb@linear-32bpp-rotate-90.html [359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_big_fb@linear-32bpp-rotate-90.html * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip: - shard-rkl: [SKIP][360] ([i915#14544] / [i915#3828]) -> [SKIP][361] ([i915#3828]) [360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html [361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html * igt@kms_big_fb@y-tiled-64bpp-rotate-270: - shard-rkl: [SKIP][362] ([i915#14544] / [i915#3638]) -> [SKIP][363] ([i915#3638]) [362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html [363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-2: - shard-rkl: [SKIP][364] ([i915#6095]) -> [SKIP][365] ([i915#14544] / [i915#6095]) +3 other tests skip [364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-2.html [365]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-2.html * igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs: - shard-rkl: [SKIP][366] ([i915#14098] / [i915#6095]) -> [SKIP][367] ([i915#14098] / [i915#14544] / [i915#6095]) +6 other tests skip [366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs.html [367]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs: - shard-rkl: [SKIP][368] ([i915#12313]) -> [SKIP][369] ([i915#12313] / [i915#14544]) [368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html [369]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc: - shard-rkl: [SKIP][370] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][371] ([i915#14098] / [i915#6095]) +5 other tests skip [370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc.html [371]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2: - shard-rkl: [SKIP][372] ([i915#14544] / [i915#6095]) -> [SKIP][373] ([i915#6095]) +1 other test skip [372]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2.html [373]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2.html * igt@kms_cdclk@mode-transition: - shard-rkl: [SKIP][374] ([i915#14544] / [i915#3742]) -> [SKIP][375] ([i915#3742]) [374]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_cdclk@mode-transition.html [375]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_cdclk@mode-transition.html * igt@kms_chamelium_color@ctm-green-to-red: - shard-rkl: [SKIP][376] ([i915#14544]) -> [SKIP][377] +9 other tests skip [376]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_chamelium_color@ctm-green-to-red.html [377]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_chamelium_color@ctm-green-to-red.html * igt@kms_chamelium_hpd@dp-hpd: - shard-rkl: [SKIP][378] ([i915#11151] / [i915#7828]) -> [SKIP][379] ([i915#11151] / [i915#14544] / [i915#7828]) +1 other test skip [378]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_chamelium_hpd@dp-hpd.html [379]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_chamelium_hpd@dp-hpd.html * igt@kms_chamelium_hpd@dp-hpd-for-each-pipe: - shard-dg1: [SKIP][380] ([i915#11151] / [i915#4423] / [i915#7828]) -> [SKIP][381] ([i915#11151] / [i915#7828]) [380]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-16/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html [381]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-16/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html * igt@kms_chamelium_hpd@vga-hpd-fast: - shard-rkl: [SKIP][382] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][383] ([i915#11151] / [i915#7828]) +3 other tests skip [382]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_chamelium_hpd@vga-hpd-fast.html [383]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_chamelium_hpd@vga-hpd-fast.html * igt@kms_content_protection@content-type-change: - shard-rkl: [SKIP][384] ([i915#14544] / [i915#6944] / [i915#9424]) -> [SKIP][385] ([i915#6944] / [i915#9424]) [384]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_content_protection@content-type-change.html [385]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_content_protection@content-type-change.html * igt@kms_content_protection@dp-mst-lic-type-0-hdcp14: - shard-rkl: [SKIP][386] ([i915#14544] / [i915#15330]) -> [SKIP][387] ([i915#15330]) [386]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html [387]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html * igt@kms_content_protection@dp-mst-lic-type-1: - shard-rkl: [SKIP][388] ([i915#14544] / [i915#15330] / [i915#3116]) -> [SKIP][389] ([i915#15330] / [i915#3116]) [388]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-1.html [389]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_content_protection@dp-mst-lic-type-1.html * igt@kms_content_protection@dp-mst-type-0-hdcp14: - shard-rkl: [SKIP][390] ([i915#15330]) -> [SKIP][391] ([i915#14544] / [i915#15330]) [390]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_content_protection@dp-mst-type-0-hdcp14.html [391]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_content_protection@dp-mst-type-0-hdcp14.html * igt@kms_content_protection@legacy: - shard-dg1: [SKIP][392] ([i915#4423] / [i915#6944] / [i915#7116] / [i915#9424]) -> [SKIP][393] ([i915#6944] / [i915#7116] / [i915#9424]) [392]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-17/igt@kms_content_protection@legacy.html [393]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-13/igt@kms_content_protection@legacy.html * igt@kms_content_protection@mei-interface: - shard-dg1: [SKIP][394] ([i915#9433]) -> [SKIP][395] ([i915#6944] / [i915#9424]) [394]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-13/igt@kms_content_protection@mei-interface.html [395]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-19/igt@kms_content_protection@mei-interface.html * igt@kms_cursor_crc@cursor-onscreen-512x512: - shard-rkl: [SKIP][396] ([i915#13049] / [i915#14544]) -> [SKIP][397] ([i915#13049]) +1 other test skip [396]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-512x512.html [397]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_cursor_crc@cursor-onscreen-512x512.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - shard-dg1: [SKIP][398] ([i915#4103] / [i915#4213] / [i915#4423]) -> [SKIP][399] ([i915#4103] / [i915#4213]) [398]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-12/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html [399]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-17/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@kms_cursor_legacy@cursora-vs-flipb-legacy: - shard-rkl: [SKIP][400] -> [SKIP][401] ([i915#14544]) +5 other tests skip [400]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html [401]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle: - shard-rkl: [SKIP][402] ([i915#14544] / [i915#4103]) -> [SKIP][403] ([i915#4103]) [402]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html [403]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html * igt@kms_dirtyfb@drrs-dirtyfb-ioctl: - shard-rkl: [SKIP][404] ([i915#9723]) -> [SKIP][405] ([i915#14544] / [i915#9723]) [404]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html [405]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html * igt@kms_dsc@dsc-with-output-formats: - shard-rkl: [SKIP][406] ([i915#14544] / [i915#3555] / [i915#3840]) -> [SKIP][407] ([i915#3555] / [i915#3840]) [406]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_dsc@dsc-with-output-formats.html [407]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_dsc@dsc-with-output-formats.html * igt@kms_feature_discovery@dp-mst: - shard-rkl: [SKIP][408] ([i915#14544] / [i915#9337]) -> [SKIP][409] ([i915#9337]) [408]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_feature_discovery@dp-mst.html [409]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_feature_discovery@dp-mst.html * igt@kms_flip@2x-flip-vs-dpms-on-nop: - shard-rkl: [SKIP][410] ([i915#14544] / [i915#9934]) -> [SKIP][411] ([i915#9934]) +3 other tests skip [410]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_flip@2x-flip-vs-dpms-on-nop.html [411]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_flip@2x-flip-vs-dpms-on-nop.html * igt@kms_flip@2x-flip-vs-modeset: - shard-rkl: [SKIP][412] ([i915#9934]) -> [SKIP][413] ([i915#14544] / [i915#9934]) +1 other test skip [412]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_flip@2x-flip-vs-modeset.html [413]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_flip@2x-flip-vs-modeset.html * igt@kms_flip@2x-flip-vs-suspend-interruptible: - shard-glk: [INCOMPLETE][414] ([i915#12314] / [i915#12745] / [i915#4839]) -> [INCOMPLETE][415] ([i915#12745] / [i915#4839]) [414]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-glk5/igt@kms_flip@2x-flip-vs-suspend-interruptible.html [415]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk3/igt@kms_flip@2x-flip-vs-suspend-interruptible.html * igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a1-hdmi-a2: - shard-glk: [INCOMPLETE][416] ([i915#12314] / [i915#4839]) -> [INCOMPLETE][417] ([i915#4839]) [416]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-glk5/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a1-hdmi-a2.html [417]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-glk3/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a1-hdmi-a2.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling: - shard-rkl: [SKIP][418] ([i915#14544] / [i915#15643]) -> [SKIP][419] ([i915#15643]) +1 other test skip [418]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html [419]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html * igt@kms_frontbuffer_tracking@fbc-tiling-4: - shard-rkl: [SKIP][420] ([i915#5439]) -> [SKIP][421] ([i915#14544] / [i915#5439]) [420]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-tiling-4.html [421]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-tiling-4.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt: - shard-rkl: [SKIP][422] ([i915#14544] / [i915#15102]) -> [SKIP][423] ([i915#15102]) +1 other test skip [422]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html [423]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render: - shard-rkl: [SKIP][424] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][425] ([i915#15102] / [i915#3023]) +8 other tests skip [424]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render.html [425]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-gtt: - shard-rkl: [SKIP][426] ([i915#14544] / [i915#1825]) -> [SKIP][427] ([i915#1825]) +11 other tests skip [426]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-gtt.html [427]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt: - shard-rkl: [SKIP][428] ([i915#1825]) -> [SKIP][429] ([i915#14544] / [i915#1825]) +9 other tests skip [428]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html [429]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render: - shard-dg2: [SKIP][430] ([i915#10433] / [i915#15102] / [i915#3458]) -> [SKIP][431] ([i915#15102] / [i915#3458]) +2 other tests skip [430]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html [431]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt: - shard-dg2: [SKIP][432] ([i915#15102] / [i915#3458]) -> [SKIP][433] ([i915#10433] / [i915#15102] / [i915#3458]) +2 other tests skip [432]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html [433]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html * igt@kms_frontbuffer_tracking@psr-suspend: - shard-rkl: [SKIP][434] ([i915#15102] / [i915#3023]) -> [SKIP][435] ([i915#14544] / [i915#15102] / [i915#3023]) +9 other tests skip [434]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_frontbuffer_tracking@psr-suspend.html [435]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-suspend.html * igt@kms_hdr@brightness-with-hdr: - shard-mtlp: [SKIP][436] ([i915#12713]) -> [SKIP][437] ([i915#1187] / [i915#12713]) [436]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-mtlp-4/igt@kms_hdr@brightness-with-hdr.html [437]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-mtlp-1/igt@kms_hdr@brightness-with-hdr.html - shard-rkl: [SKIP][438] ([i915#12713]) -> [SKIP][439] ([i915#13331]) [438]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-2/igt@kms_hdr@brightness-with-hdr.html [439]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-1/igt@kms_hdr@brightness-with-hdr.html * igt@kms_joiner@basic-max-non-joiner: - shard-rkl: [SKIP][440] ([i915#13688]) -> [SKIP][441] ([i915#13688] / [i915#14544]) [440]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_joiner@basic-max-non-joiner.html [441]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_joiner@basic-max-non-joiner.html * igt@kms_joiner@basic-ultra-joiner: - shard-rkl: [SKIP][442] ([i915#14544] / [i915#15458]) -> [SKIP][443] ([i915#15458]) [442]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_joiner@basic-ultra-joiner.html [443]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_joiner@basic-ultra-joiner.html * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier: - shard-rkl: [SKIP][444] ([i915#15709]) -> [SKIP][445] ([i915#14544] / [i915#15709]) +2 other tests skip [444]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier.html [445]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier.html * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier: - shard-rkl: [SKIP][446] ([i915#14544] / [i915#15709]) -> [SKIP][447] ([i915#15709]) +1 other test skip [446]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html [447]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html * igt@kms_plane_multiple@2x-tiling-4: - shard-rkl: [SKIP][448] ([i915#13958]) -> [SKIP][449] ([i915#13958] / [i915#14544]) [448]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_plane_multiple@2x-tiling-4.html [449]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_plane_multiple@2x-tiling-4.html * igt@kms_plane_multiple@2x-tiling-x: - shard-rkl: [SKIP][450] ([i915#13958] / [i915#14544]) -> [SKIP][451] ([i915#13958]) [450]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_plane_multiple@2x-tiling-x.html [451]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-2/igt@kms_plane_multiple@2x-tiling-x.html * igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b: - shard-rkl: [SKIP][452] ([i915#15329]) -> [SKIP][453] ([i915#14544] / [i915#15329]) +3 other tests skip [452]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b.html [453]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b.html * igt@kms_pm_backlight@fade-with-dpms: - shard-rkl: [SKIP][454] ([i915#14544] / [i915#5354]) -> [SKIP][455] ([i915#5354]) [454]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_pm_backlight@fade-with-dpms.html [455]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_pm_backlight@fade-with-dpms.html * igt@kms_pm_dc@dc5-retention-flops: - shard-rkl: [SKIP][456] ([i915#3828]) -> [SKIP][457] ([i915#14544] / [i915#3828]) [456]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_pm_dc@dc5-retention-flops.html [457]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_pm_dc@dc5-retention-flops.html * igt@kms_pm_lpsp@kms-lpsp: - shard-rkl: [SKIP][458] ([i915#9340]) -> [SKIP][459] ([i915#3828]) [458]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-4/igt@kms_pm_lpsp@kms-lpsp.html [459]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-8/igt@kms_pm_lpsp@kms-lpsp.html * igt@kms_pm_rpm@fences-dpms: - shard-dg1: [SKIP][460] ([i915#4077]) -> [SKIP][461] ([i915#4077] / [i915#4423]) [460]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg1-16/igt@kms_pm_rpm@fences-dpms.html [461]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg1-16/igt@kms_pm_rpm@fences-dpms.html * igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area: - shard-rkl: [SKIP][462] ([i915#11520]) -> [SKIP][463] ([i915#11520] / [i915#14544]) +1 other test skip [462]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html [463]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf: - shard-rkl: [SKIP][464] ([i915#11520] / [i915#14544]) -> [SKIP][465] ([i915#11520]) +3 other tests skip [464]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html [465]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html * igt@kms_psr2_su@frontbuffer-xrgb8888: - shard-rkl: [SKIP][466] ([i915#14544] / [i915#9683]) -> [SKIP][467] ([i915#9683]) [466]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_psr2_su@frontbuffer-xrgb8888.html [467]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_psr2_su@frontbuffer-xrgb8888.html * igt@kms_psr@pr-sprite-blt: - shard-rkl: [SKIP][468] ([i915#1072] / [i915#9732]) -> [SKIP][469] ([i915#1072] / [i915#14544] / [i915#9732]) +4 other tests skip [468]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@kms_psr@pr-sprite-blt.html [469]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_psr@pr-sprite-blt.html * igt@kms_psr@psr2-cursor-blt: - shard-rkl: [SKIP][470] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][471] ([i915#1072] / [i915#9732]) +11 other tests skip [470]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_psr@psr2-cursor-blt.html [471]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_psr@psr2-cursor-blt.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270: - shard-dg2: [SKIP][472] ([i915#12755] / [i915#5190]) -> [SKIP][473] ([i915#5190]) [472]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-dg2-3/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html [473]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-dg2-10/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html * igt@kms_setmode@invalid-clone-single-crtc: - shard-rkl: [SKIP][474] ([i915#14544] / [i915#3555]) -> [SKIP][475] ([i915#3555]) +2 other tests skip [474]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@kms_setmode@invalid-clone-single-crtc.html [475]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@kms_setmode@invalid-clone-single-crtc.html * igt@kms_vrr@lobf: - shard-rkl: [SKIP][476] ([i915#11920]) -> [SKIP][477] ([i915#11920] / [i915#14544]) [476]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-3/igt@kms_vrr@lobf.html [477]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-6/igt@kms_vrr@lobf.html * igt@perf_pmu@module-unload: - shard-tglu: [ABORT][478] ([i915#15778]) -> [INCOMPLETE][479] ([i915#13520]) [478]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-tglu-9/igt@perf_pmu@module-unload.html [479]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-tglu-4/igt@perf_pmu@module-unload.html * igt@prime_vgem@fence-read-hang: - shard-rkl: [SKIP][480] ([i915#14544] / [i915#3708]) -> [SKIP][481] ([i915#3708]) +1 other test skip [480]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-6/igt@prime_vgem@fence-read-hang.html [481]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/shard-rkl-7/igt@prime_vgem@fence-read-hang.html * igt@sriov_basic@enable-vfs-bind-unbind-each: - shard-rkl: [SKIP][482] ([i915#9917]) -> [SKIP][483] ([i915#14544] / [i915#9917]) +1 other test skip [482]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18173/shard-rkl-8/igt@sriov_basic@enable-vfs-bind-unbind-each.html [483]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163467v1/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#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072 [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078 [i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151 [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520 [i915#1187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1187 [i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920 [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061 [i915#12178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12178 [i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276 [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313 [i915#12314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12314 [i915#12316]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12316 [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257 [i915#12655]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12655 [i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713 [i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745 [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755 [i915#12756]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12756 [i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805 [i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910 [i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964 [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046 [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049 [i915#13331]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13331 [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356 [i915#13409]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13409 [i915#13476]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13476 [i915#13520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13520 [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566 [i915#13688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13688 [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691 [i915#13705]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13705 [i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748 [i915#13783]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13783 [i915#13809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13809 [i915#13821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13821 [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958 [i915#14033]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14033 [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098 [i915#14123]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14123 [i915#14350]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14350 [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#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712 [i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073 [i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102 [i915#15104]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15104 [i915#15131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15131 [i915#15243]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15243 [i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329 [i915#15330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15330 [i915#15389]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15389 [i915#15433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15433 [i915#15458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15458 [i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459 [i915#15460]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15460 [i915#15608]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15608 [i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643 [i915#15656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15656 [i915#15672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15672 [i915#15678]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15678 [i915#15709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15709 [i915#15725]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15725 [i915#15733]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15733 [i915#15734]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15734 [i915#15739]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15739 [i915#15751]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15751 [i915#15778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15778 [i915#15804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15804 [i915#15815]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15815 [i915#15816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15816 [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769 [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825 [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527 [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658 [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#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469 [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539 [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#3955]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3955 [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077 [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083 [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103 [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213 [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270 [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349 [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#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812 [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817 [i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839 [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852 [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860 [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880 [i915#5030]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5030 [i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138 [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190 [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286 [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289 [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354 [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439 [i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493 [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956 [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095 [i915#6113]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6113 [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301 [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334 [i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412 [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524 [i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590 [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944 [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953 [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116 [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118 [i915#7582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7582 [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697 [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707 [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828 [i915#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862 [i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984 [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228 [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381 [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399 [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411 [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428 [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430 [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516 [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555 [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623 [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708 [i915#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808 [i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821 [i915#9041]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9041 [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323 [i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337 [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340 [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424 [i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433 [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683 [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685 [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688 [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723 [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732 [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766 [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_18173 -> Patchwork_163467v1 CI-20190529: 20190529 CI_DRM_18173: 185629feb8aee7cf88f72d1e67531574f1bea7f5 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_8808: 8808 Patchwork_163467v1: 185629feb8aee7cf88f72d1e67531574f1bea7f5 @ 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_163467v1/index.html [-- Attachment #2: Type: text/html, Size: 165057 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-03-25 9:32 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-18 13:29 [PATCH 0/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula
2026-03-18 13:29 ` [PATCH 1/5] drm/xe/fbdev: put intel_fbdev_fb_prefer_stolen() behind IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) Jani Nikula
2026-03-24 23:33 ` Michał Grzelak
2026-03-18 13:29 ` [PATCH 2/5] drm/{i915, xe}/fbdev: drop drm device parameter from intel_fbdev_fb_fill_info() Jani Nikula
2026-03-24 23:34 ` Michał Grzelak
2026-03-18 13:29 ` [PATCH 3/5] drm/{i915,xe}: move fbdev fb calls to parent interface Jani Nikula
2026-03-24 23:42 ` Michał Grzelak
2026-03-24 23:51 ` Michał Grzelak
2026-03-25 8:13 ` [PATCH 3/5] drm/{i915, xe}: " Jani Nikula
2026-03-25 9:32 ` [PATCH 3/5] drm/{i915,xe}: " Michał Grzelak
2026-03-18 13:29 ` [PATCH 4/5] drm/i915: pass struct drm_i915_private to i915_bo_fbdev_prefer_stolen() Jani Nikula
2026-03-24 23:46 ` Michał Grzelak
2026-03-18 13:29 ` [PATCH 5/5] drm/xe: pass struct xe_device to xe_display_bo_fbdev_prefer_stolen() Jani Nikula
2026-03-24 23:47 ` Michał Grzelak
2026-03-18 14:28 ` ✓ i915.CI.BAT: success for drm/{i915,xe}: move fbdev fb calls to parent interface Patchwork
2026-03-19 19:51 ` ✗ i915.CI.Full: failure " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox