]> www.infradead.org Git - users/hch/configfs.git/commitdiff
drm/xe: Add NEEDS_2M BO flag
authorMichal Wajdeczko <michal.wajdeczko@intel.com>
Mon, 15 Jul 2024 18:05:38 +0000 (20:05 +0200)
committerMichal Wajdeczko <michal.wajdeczko@intel.com>
Mon, 22 Jul 2024 10:53:06 +0000 (12:53 +0200)
In addition of NEEDS_64K BO flag, add similar one to force 2 MiB
alignment of the buffer objects. Explicitly use this flag during
VF LMEM provisioning as LMTT uses 2 MiB pages and one day we may
drop requirement of allocating pinned objects as contiguous.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240715180538.1418-3-michal.wajdeczko@intel.com
drivers/gpu/drm/xe/xe_bo.c
drivers/gpu/drm/xe/xe_bo.h
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c

index da35b4a21739949d902ffb5ddfb0b700e981f602..3295bc92d7aaa7680a26b5c1b85d434c4d9cf8d5 100644 (file)
@@ -1264,13 +1264,14 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,
        if (flags & (XE_BO_FLAG_VRAM_MASK | XE_BO_FLAG_STOLEN) &&
            !(flags & XE_BO_FLAG_IGNORE_MIN_PAGE_SIZE) &&
            ((xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K) ||
-            (flags & XE_BO_FLAG_NEEDS_64K))) {
-               aligned_size = ALIGN(size, SZ_64K);
+            (flags & (XE_BO_FLAG_NEEDS_64K | XE_BO_FLAG_NEEDS_2M)))) {
+               size_t align = flags & XE_BO_FLAG_NEEDS_2M ? SZ_2M : SZ_64K;
+
+               aligned_size = ALIGN(size, align);
                if (type != ttm_bo_type_device)
-                       size = ALIGN(size, SZ_64K);
+                       size = ALIGN(size, align);
                flags |= XE_BO_FLAG_INTERNAL_64K;
-               alignment = SZ_64K >> PAGE_SHIFT;
-
+               alignment = align >> PAGE_SHIFT;
        } else {
                aligned_size = ALIGN(size, SZ_4K);
                flags &= ~XE_BO_FLAG_INTERNAL_64K;
index 2afc50132c2badccfff2a942a6bb6ef85ab5a7f6..1c9dc8adaaa35da7654bd220a4c624b51ba4b473 100644 (file)
@@ -37,7 +37,8 @@
 #define XE_BO_FLAG_NEEDS_CPU_ACCESS    BIT(13)
 #define XE_BO_FLAG_NEEDS_UC            BIT(14)
 #define XE_BO_FLAG_NEEDS_64K           BIT(15)
-#define XE_BO_FLAG_GGTT_INVALIDATE     BIT(16)
+#define XE_BO_FLAG_NEEDS_2M            BIT(16)
+#define XE_BO_FLAG_GGTT_INVALIDATE     BIT(17)
 /* this one is trigger internally only */
 #define XE_BO_FLAG_INTERNAL_TEST       BIT(30)
 #define XE_BO_FLAG_INTERNAL_64K                BIT(31)
index 4699b78360013c1e16805d30aa9d5d306e43c321..52c7277d243dd00e48c06a16c8481783e0c216a7 100644 (file)
@@ -1401,6 +1401,7 @@ static int pf_provision_vf_lmem(struct xe_gt *gt, unsigned int vfid, u64 size)
                                  ALIGN(size, PAGE_SIZE),
                                  ttm_bo_type_kernel,
                                  XE_BO_FLAG_VRAM_IF_DGFX(tile) |
+                                 XE_BO_FLAG_NEEDS_2M |
                                  XE_BO_FLAG_PINNED);
        if (IS_ERR(bo))
                return PTR_ERR(bo);