From: Maarten Lankhorst <dev@lankhorst.se>
To: intel-xe@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org, Maarten Lankhorst <dev@lankhorst.se>
Subject: [PATCH v2 3/6] drm/xe/display: Reserve the original GGTT space before creating a bo
Date: Wed, 15 Jul 2026 13:05:54 +0200 [thread overview]
Message-ID: <20260715110557.2172095-4-dev@lankhorst.se> (raw)
In-Reply-To: <20260715110557.2172095-1-dev@lankhorst.se>
Annotate the original area of the framebuffer as reserved in the GGTT
before creating a new GGTT entry. This allows us to remove the
range restrictions of GGTT in xe_bo_create_pin_map_at_novm().
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/xe/display/xe_initial_plane.c | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
index 0f86b73036d03..f49dda8e28255 100644
--- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
+++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
@@ -37,6 +37,25 @@ static bool need_pte_local(struct xe_device *xe)
return IS_DGFX(xe) || has_lmembar(xe);
}
+static struct xe_ggtt_node *reserve_original_node(struct xe_ggtt *ggtt, u32 base, u32 size, u64 page_size)
+{
+ u64 ggtt_start = xe_ggtt_start(ggtt), ggtt_end = ggtt_start + xe_ggtt_size(ggtt);
+
+ /* Completely truncated? */
+ if (base + size <= ggtt_start || base >= ggtt_end)
+ return NULL;
+
+ /* Partially truncated? */
+ if (base <= ggtt_start) {
+ size -= ggtt_start - base;
+ base = ggtt_start;
+ } else if (base + size >= ggtt_end) {
+ size = ggtt_end - base;
+ }
+
+ return xe_ggtt_insert_node_at(ggtt, size, page_size, base, base + size);
+}
+
static struct xe_bo *
initial_plane_bo(struct xe_device *xe,
struct intel_initial_plane_config *plane_config)
@@ -46,6 +65,7 @@ initial_plane_bo(struct xe_device *xe,
resource_size_t phys_base;
u32 base, size, flags;
u64 page_size = xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K;
+ struct xe_ggtt_node *original_ggtt_node;
if (plane_config->size == 0)
return NULL;
@@ -111,8 +131,15 @@ initial_plane_bo(struct xe_device *xe,
}
}
+ original_ggtt_node = reserve_original_node(tile0->mem.ggtt, base, size, page_size);
+ if (IS_ERR(original_ggtt_node))
+ return NULL;
+
bo = xe_bo_create_pin_map_at_novm(xe, tile0, size, phys_base,
ttm_bo_type_kernel, flags, 0, false);
+ if (original_ggtt_node)
+ xe_ggtt_node_remove_noclear(original_ggtt_node);
+
if (IS_ERR(bo)) {
drm_dbg_kms(&xe->drm,
"Failed to create bo phys_base=%pa size %u with flags %x: %li\n",
--
2.53.0
next prev parent reply other threads:[~2026-07-15 11:05 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
2026-07-15 11:05 ` [PATCH v2 1/6] drm/xe/ggtt: Add xe_ggtt_insert_node_at Maarten Lankhorst
2026-07-17 14:24 ` Ville Syrjälä
2026-07-15 11:05 ` [PATCH v2 2/6] drm/xe/ggtt: Add xe_ggtt_node_remove_noclear Maarten Lankhorst
2026-07-17 14:35 ` Ville Syrjälä
2026-07-15 11:05 ` Maarten Lankhorst [this message]
2026-07-17 14:28 ` [PATCH v2 3/6] drm/xe/display: Reserve the original GGTT space before creating a bo Ville Syrjälä
2026-07-15 11:05 ` [PATCH v2 4/6] drm/xe/display: Use the correct calculation for phys_base on integrated Maarten Lankhorst
2026-07-15 11:05 ` [PATCH v2 5/6] drm/xe/display: Remove duplicated code Maarten Lankhorst
2026-07-15 11:34 ` Maarten Lankhorst
2026-07-17 14:46 ` Ville Syrjälä
2026-07-15 11:05 ` [PATCH v2 6/6] drm/xe/ggtt: Remove xe_ggtt_insert_bo_at Maarten Lankhorst
2026-07-17 14:34 ` Ville Syrjälä
2026-07-15 11:50 ` ✗ CI.checkpatch: warning for drm/xe: More BIOS FB takeover fixes (rev2) Patchwork
2026-07-15 11:51 ` ✓ i915.CI.BAT: success " Patchwork
2026-07-15 11:51 ` ✓ CI.KUnit: " Patchwork
2026-07-15 12:28 ` ✓ Xe.CI.BAT: " Patchwork
2026-07-15 12:33 ` ✓ i915.CI.Full: " Patchwork
2026-07-15 13:42 ` ✓ Xe.CI.FULL: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260715110557.2172095-4-dev@lankhorst.se \
--to=dev@lankhorst.se \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.