]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe: Rename XE_BO_FLAG_SCANOUT to XE_BO_FLAG_FORCE_WC
authorTvrtko Ursulin <tvrtko.ursulin@igalia.com>
Tue, 24 Mar 2026 08:40:07 +0000 (08:40 +0000)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 24 Mar 2026 13:29:10 +0000 (09:29 -0400)
Rename XE_BO_FLAG_SCANOUT to XE_BO_FLAG_FORCE_WC so that the usage of the
flag can legitimately be expanded to more than just the actual frame-
buffer objects.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Suggested-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patch.msgid.link/20260324084018.20353-2-tvrtko.ursulin@igalia.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/display/intel_fbdev_fb.c
drivers/gpu/drm/xe/display/xe_display_bo.c
drivers/gpu/drm/xe/display/xe_dsb_buffer.c
drivers/gpu/drm/xe/display/xe_fb_pin.c
drivers/gpu/drm/xe/display/xe_initial_plane.c
drivers/gpu/drm/xe/xe_bo.c
drivers/gpu/drm/xe/xe_bo.h

index 87af5646c938a1e9a93d04d67a6f641b0e2304d5..d7030e4d814ca8fea45495e7dde79b98194d3322 100644 (file)
@@ -56,9 +56,11 @@ struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size
        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 |
+                                               ttm_bo_type_kernel,
+                                               XE_BO_FLAG_FORCE_WC |
                                                XE_BO_FLAG_STOLEN |
-                                               XE_BO_FLAG_GGTT, false);
+                                               XE_BO_FLAG_GGTT,
+                                               false);
                if (!IS_ERR(obj))
                        drm_info(&xe->drm, "Allocated fbdev into stolen\n");
                else
@@ -69,9 +71,11 @@ struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size
 
        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 |
+                                               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);
+                                               XE_BO_FLAG_GGTT,
+                                               false);
        }
 
        if (IS_ERR(obj)) {
index a689f71e7b145608a261708717ddcf8d82160628..1d81b9908265f61137556f5b8fc1fc9dc00639b4 100644 (file)
@@ -42,9 +42,9 @@ static int xe_display_bo_framebuffer_init(struct drm_gem_object *obj,
        if (ret)
                goto err;
 
-       if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
+       if (!(bo->flags & XE_BO_FLAG_FORCE_WC)) {
                /*
-                * XE_BO_FLAG_SCANOUT should ideally be set at creation, or is
+                * XE_BO_FLAG_FORCE_WC should ideally be set at creation, or is
                 * automatically set when creating FB. We cannot change caching
                 * mode when the bo is VM_BINDed, so we can only set
                 * coherency with display when unbound.
@@ -54,7 +54,7 @@ static int xe_display_bo_framebuffer_init(struct drm_gem_object *obj,
                        ret = -EINVAL;
                        goto err;
                }
-               bo->flags |= XE_BO_FLAG_SCANOUT;
+               bo->flags |= XE_BO_FLAG_FORCE_WC;
        }
        ttm_bo_unreserve(&bo->ttm);
        return 0;
index 1c67a950c6ad5950604384885c8c19c6afccd82f..a7158c73a14c354256889e7a6148eabe0428c225 100644 (file)
@@ -54,7 +54,9 @@ static struct intel_dsb_buffer *xe_dsb_buffer_create(struct drm_device *drm, siz
                                        PAGE_ALIGN(size),
                                        ttm_bo_type_kernel,
                                        XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) |
-                                       XE_BO_FLAG_SCANOUT | XE_BO_FLAG_GGTT, false);
+                                       XE_BO_FLAG_FORCE_WC |
+                                       XE_BO_FLAG_GGTT,
+                                       false);
        if (IS_ERR(obj)) {
                ret = PTR_ERR(obj);
                goto err_pin_map;
index dbbc61032b7fd9bfb318808a2e0cd4908f14445e..d4a9eb550cae2f60710a74b63e2155fabd37bd2f 100644 (file)
@@ -429,7 +429,7 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
                return 0;
 
        /* We reject creating !SCANOUT fb's, so this is weird.. */
-       drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_SCANOUT));
+       drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_FORCE_WC));
 
        vma = __xe_pin_fb_vma(intel_fb, &new_plane_state->view.gtt, alignment);
 
index 65cc0b0c934b15c575e424370a8598c84e59cb4a..8bcae552dddcf63bdb7eb40ab8465e419dde21e9 100644 (file)
@@ -48,7 +48,7 @@ initial_plane_bo(struct xe_device *xe,
        if (plane_config->size == 0)
                return NULL;
 
-       flags = XE_BO_FLAG_SCANOUT | XE_BO_FLAG_GGTT;
+       flags = XE_BO_FLAG_FORCE_WC | XE_BO_FLAG_GGTT;
 
        base = round_down(plane_config->base, page_size);
        if (IS_DGFX(xe)) {
index 216e1d8635f41abf497560bf07555a9971dd735c..7545d2fa32555b80a3acac3b41c66ef8ea2f535f 100644 (file)
@@ -510,13 +510,11 @@ static struct ttm_tt *xe_ttm_tt_create(struct ttm_buffer_object *ttm_bo,
                WARN_ON((bo->flags & XE_BO_FLAG_USER) && !bo->cpu_caching);
 
                /*
-                * Display scanout is always non-coherent with the CPU cache.
-                *
                 * For Xe_LPG and beyond up to NVL-P (excluding), PPGTT PTE
                 * lookups are also non-coherent and require a CPU:WC mapping.
                 */
-               if ((!bo->cpu_caching && bo->flags & XE_BO_FLAG_SCANOUT) ||
-                    (!xe->info.has_cached_pt && bo->flags & XE_BO_FLAG_PAGETABLE))
+               if ((!bo->cpu_caching && bo->flags & XE_BO_FLAG_FORCE_WC) ||
+                   (!xe->info.has_cached_pt && bo->flags & XE_BO_FLAG_PAGETABLE))
                        caching = ttm_write_combined;
        }
 
@@ -3201,8 +3199,11 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
        if (args->flags & DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING)
                bo_flags |= XE_BO_FLAG_DEFER_BACKING;
 
+       /*
+        * Display scanout is always non-coherent with the CPU cache.
+        */
        if (args->flags & DRM_XE_GEM_CREATE_FLAG_SCANOUT)
-               bo_flags |= XE_BO_FLAG_SCANOUT;
+               bo_flags |= XE_BO_FLAG_FORCE_WC;
 
        if (args->flags & DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION) {
                if (XE_IOCTL_DBG(xe, GRAPHICS_VER(xe) < 20))
@@ -3214,7 +3215,7 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 
        /* CCS formats need physical placement at a 64K alignment in VRAM. */
        if ((bo_flags & XE_BO_FLAG_VRAM_MASK) &&
-           (bo_flags & XE_BO_FLAG_SCANOUT) &&
+           (args->flags & DRM_XE_GEM_CREATE_FLAG_SCANOUT) &&
            !(xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K) &&
            IS_ALIGNED(args->size, SZ_64K))
                bo_flags |= XE_BO_FLAG_NEEDS_64K;
@@ -3234,7 +3235,7 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
                         args->cpu_caching != DRM_XE_GEM_CPU_CACHING_WC))
                return -EINVAL;
 
-       if (XE_IOCTL_DBG(xe, bo_flags & XE_BO_FLAG_SCANOUT &&
+       if (XE_IOCTL_DBG(xe, bo_flags & XE_BO_FLAG_FORCE_WC &&
                         args->cpu_caching == DRM_XE_GEM_CPU_CACHING_WB))
                return -EINVAL;
 
@@ -3702,7 +3703,7 @@ int xe_bo_dumb_create(struct drm_file *file_priv,
        bo = xe_bo_create_user(xe, NULL, args->size,
                               DRM_XE_GEM_CPU_CACHING_WC,
                               XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) |
-                              XE_BO_FLAG_SCANOUT |
+                              XE_BO_FLAG_FORCE_WC |
                               XE_BO_FLAG_NEEDS_CPU_ACCESS, NULL);
        if (IS_ERR(bo))
                return PTR_ERR(bo);
index 2cbac16f7db7546138e53487a0c827afb776914d..a0ad846e94503d61ee2d9d1a0c524bdae41d2bc0 100644 (file)
@@ -35,7 +35,7 @@
 #define XE_BO_FLAG_PINNED              BIT(7)
 #define XE_BO_FLAG_NO_RESV_EVICT       BIT(8)
 #define XE_BO_FLAG_DEFER_BACKING       BIT(9)
-#define XE_BO_FLAG_SCANOUT             BIT(10)
+#define XE_BO_FLAG_FORCE_WC            BIT(10)
 #define XE_BO_FLAG_FIXED_PLACEMENT     BIT(11)
 #define XE_BO_FLAG_PAGETABLE           BIT(12)
 #define XE_BO_FLAG_NEEDS_CPU_ACCESS    BIT(13)