Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/xe: Rename XE_BO_FLAG_SCANOUT to XE_BO_FLAG_FORCE_WC

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>

authored by

Tvrtko Ursulin and committed by
Rodrigo Vivi
2bb026f3 9e60ee0e

+26 -19
+8 -4
drivers/gpu/drm/xe/display/intel_fbdev_fb.c
··· 56 56 if (intel_fbdev_fb_prefer_stolen(drm, size)) { 57 57 obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), 58 58 size, 59 - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | 59 + ttm_bo_type_kernel, 60 + XE_BO_FLAG_FORCE_WC | 60 61 XE_BO_FLAG_STOLEN | 61 - XE_BO_FLAG_GGTT, false); 62 + XE_BO_FLAG_GGTT, 63 + false); 62 64 if (!IS_ERR(obj)) 63 65 drm_info(&xe->drm, "Allocated fbdev into stolen\n"); 64 66 else ··· 71 69 72 70 if (IS_ERR(obj)) { 73 71 obj = xe_bo_create_pin_map_novm(xe, xe_device_get_root_tile(xe), size, 74 - ttm_bo_type_kernel, XE_BO_FLAG_SCANOUT | 72 + ttm_bo_type_kernel, 73 + XE_BO_FLAG_FORCE_WC | 75 74 XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | 76 - XE_BO_FLAG_GGTT, false); 75 + XE_BO_FLAG_GGTT, 76 + false); 77 77 } 78 78 79 79 if (IS_ERR(obj)) {
+3 -3
drivers/gpu/drm/xe/display/xe_display_bo.c
··· 42 42 if (ret) 43 43 goto err; 44 44 45 - if (!(bo->flags & XE_BO_FLAG_SCANOUT)) { 45 + if (!(bo->flags & XE_BO_FLAG_FORCE_WC)) { 46 46 /* 47 - * XE_BO_FLAG_SCANOUT should ideally be set at creation, or is 47 + * XE_BO_FLAG_FORCE_WC should ideally be set at creation, or is 48 48 * automatically set when creating FB. We cannot change caching 49 49 * mode when the bo is VM_BINDed, so we can only set 50 50 * coherency with display when unbound. ··· 54 54 ret = -EINVAL; 55 55 goto err; 56 56 } 57 - bo->flags |= XE_BO_FLAG_SCANOUT; 57 + bo->flags |= XE_BO_FLAG_FORCE_WC; 58 58 } 59 59 ttm_bo_unreserve(&bo->ttm); 60 60 return 0;
+3 -1
drivers/gpu/drm/xe/display/xe_dsb_buffer.c
··· 54 54 PAGE_ALIGN(size), 55 55 ttm_bo_type_kernel, 56 56 XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | 57 - XE_BO_FLAG_SCANOUT | XE_BO_FLAG_GGTT, false); 57 + XE_BO_FLAG_FORCE_WC | 58 + XE_BO_FLAG_GGTT, 59 + false); 58 60 if (IS_ERR(obj)) { 59 61 ret = PTR_ERR(obj); 60 62 goto err_pin_map;
+1 -1
drivers/gpu/drm/xe/display/xe_fb_pin.c
··· 429 429 return 0; 430 430 431 431 /* We reject creating !SCANOUT fb's, so this is weird.. */ 432 - drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_SCANOUT)); 432 + drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_FORCE_WC)); 433 433 434 434 vma = __xe_pin_fb_vma(intel_fb, &new_plane_state->view.gtt, alignment); 435 435
+1 -1
drivers/gpu/drm/xe/display/xe_initial_plane.c
··· 48 48 if (plane_config->size == 0) 49 49 return NULL; 50 50 51 - flags = XE_BO_FLAG_SCANOUT | XE_BO_FLAG_GGTT; 51 + flags = XE_BO_FLAG_FORCE_WC | XE_BO_FLAG_GGTT; 52 52 53 53 base = round_down(plane_config->base, page_size); 54 54 if (IS_DGFX(xe)) {
+9 -8
drivers/gpu/drm/xe/xe_bo.c
··· 510 510 WARN_ON((bo->flags & XE_BO_FLAG_USER) && !bo->cpu_caching); 511 511 512 512 /* 513 - * Display scanout is always non-coherent with the CPU cache. 514 - * 515 513 * For Xe_LPG and beyond up to NVL-P (excluding), PPGTT PTE 516 514 * lookups are also non-coherent and require a CPU:WC mapping. 517 515 */ 518 - if ((!bo->cpu_caching && bo->flags & XE_BO_FLAG_SCANOUT) || 519 - (!xe->info.has_cached_pt && bo->flags & XE_BO_FLAG_PAGETABLE)) 516 + if ((!bo->cpu_caching && bo->flags & XE_BO_FLAG_FORCE_WC) || 517 + (!xe->info.has_cached_pt && bo->flags & XE_BO_FLAG_PAGETABLE)) 520 518 caching = ttm_write_combined; 521 519 } 522 520 ··· 3199 3201 if (args->flags & DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING) 3200 3202 bo_flags |= XE_BO_FLAG_DEFER_BACKING; 3201 3203 3204 + /* 3205 + * Display scanout is always non-coherent with the CPU cache. 3206 + */ 3202 3207 if (args->flags & DRM_XE_GEM_CREATE_FLAG_SCANOUT) 3203 - bo_flags |= XE_BO_FLAG_SCANOUT; 3208 + bo_flags |= XE_BO_FLAG_FORCE_WC; 3204 3209 3205 3210 if (args->flags & DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION) { 3206 3211 if (XE_IOCTL_DBG(xe, GRAPHICS_VER(xe) < 20)) ··· 3215 3214 3216 3215 /* CCS formats need physical placement at a 64K alignment in VRAM. */ 3217 3216 if ((bo_flags & XE_BO_FLAG_VRAM_MASK) && 3218 - (bo_flags & XE_BO_FLAG_SCANOUT) && 3217 + (args->flags & DRM_XE_GEM_CREATE_FLAG_SCANOUT) && 3219 3218 !(xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K) && 3220 3219 IS_ALIGNED(args->size, SZ_64K)) 3221 3220 bo_flags |= XE_BO_FLAG_NEEDS_64K; ··· 3235 3234 args->cpu_caching != DRM_XE_GEM_CPU_CACHING_WC)) 3236 3235 return -EINVAL; 3237 3236 3238 - if (XE_IOCTL_DBG(xe, bo_flags & XE_BO_FLAG_SCANOUT && 3237 + if (XE_IOCTL_DBG(xe, bo_flags & XE_BO_FLAG_FORCE_WC && 3239 3238 args->cpu_caching == DRM_XE_GEM_CPU_CACHING_WB)) 3240 3239 return -EINVAL; 3241 3240 ··· 3703 3702 bo = xe_bo_create_user(xe, NULL, args->size, 3704 3703 DRM_XE_GEM_CPU_CACHING_WC, 3705 3704 XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) | 3706 - XE_BO_FLAG_SCANOUT | 3705 + XE_BO_FLAG_FORCE_WC | 3707 3706 XE_BO_FLAG_NEEDS_CPU_ACCESS, NULL); 3708 3707 if (IS_ERR(bo)) 3709 3708 return PTR_ERR(bo);
+1 -1
drivers/gpu/drm/xe/xe_bo.h
··· 35 35 #define XE_BO_FLAG_PINNED BIT(7) 36 36 #define XE_BO_FLAG_NO_RESV_EVICT BIT(8) 37 37 #define XE_BO_FLAG_DEFER_BACKING BIT(9) 38 - #define XE_BO_FLAG_SCANOUT BIT(10) 38 + #define XE_BO_FLAG_FORCE_WC BIT(10) 39 39 #define XE_BO_FLAG_FIXED_PLACEMENT BIT(11) 40 40 #define XE_BO_FLAG_PAGETABLE BIT(12) 41 41 #define XE_BO_FLAG_NEEDS_CPU_ACCESS BIT(13)