On 30/06/2026 14:55, Maarten Lankhorst wrote:
Prefer to use system memory for global framebuffers, and reserve
the space for FBC use only.

Now that multiple CRTC's can use FBC's, the simple heuristic
of using less than half of stolen is no longer sufficient.

I think worth mentioning that we have major issues around stolen + CPU access on xe2+?


Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/7513
Signed-off-by: Maarten Lankhorst <[email protected]>

Reviewed-by: Matthew Auld <[email protected]>

---
  drivers/gpu/drm/xe/display/xe_display_bo.c | 33 ++++------------------
  1 file changed, 6 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/xe/display/xe_display_bo.c 
b/drivers/gpu/drm/xe/display/xe_display_bo.c
index 677ae3af9ac0c..04d4204b37a53 100644
--- a/drivers/gpu/drm/xe/display/xe_display_bo.c
+++ b/drivers/gpu/drm/xe/display/xe_display_bo.c
@@ -154,33 +154,12 @@ static struct drm_gem_object 
*xe_display_bo_fbdev_create(struct drm_device *drm,
        struct xe_device *xe = to_xe_device(drm);
        struct xe_bo *obj;
- obj = ERR_PTR(-ENODEV);
-
-       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_FORCE_WC |
-                                               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_FORCE_WC |
-                                               
XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) |
-                                               XE_BO_FLAG_GGTT,
-                                               false);
-       }
-
+       obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size,
+                                       ttm_bo_type_kernel,
+                                       XE_BO_FLAG_FORCE_WC |
+                                       
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);

Reply via email to