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.

Signed-off-by: Maarten Lankhorst <[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 a5080f6540d46..1bde12b509fcb 100644
--- a/drivers/gpu/drm/xe/display/xe_display_bo.c
+++ b/drivers/gpu/drm/xe/display/xe_display_bo.c
@@ -153,33 +153,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);
-- 
2.53.0

Reply via email to