FAILED: patch "[PATCH] drm/amdgpu: Respect placement requirements in amdgpu_gtt_mgr" failed to apply to 6.1-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x 8882f8897e554053af9e72f4c2da8b1e2cce56c7
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026072909-repurpose-enticing-16f2@gregkh' --subject-prefix 'PATCH 6.1.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8882f8897e554053af9e72f4c2da8b1e2cce56c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timur=20Krist=C3=B3f?= <[email protected]>
Date: Mon, 25 May 2026 13:33:17 +0200
Subject: [PATCH] drm/amdgpu: Respect placement requirements in amdgpu_gtt_mgr
functions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When testing intersection and compatibility, respect the actual placement requirements. This is a pre-requisite for ensuring that UVD CS BOs do not cross 256M segments.
drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c +28 -2
@@ -272,7 +272,20 @@ static bool amdgpu_gtt_mgr_intersects(struct ttm_resource_manager *man, const struct ttm_place *place, size_t size) { -return !place->lpfn ||amdgpu_gtt_mgr_has_gart_addr (res); +const struct drm_mm_node *const node = &to_ttm_range_mgr_node (res)->mm_nodes[0 ]; +const u32 num_pages =PFN_UP (size); + +if (!place->lpfn) +return true; + +if (!amdgpu_gtt_mgr_has_gart_addr (res)) +return false; + +if (place->fpfn >= (node->start + num_pages) || + (place->lpfn && place->lpfn <= node->start)) +return false; + +return true; }/**
@@ -290,7 +303,20 @@ static bool amdgpu_gtt_mgr_compatible(struct ttm_resource_manager *man, const struct ttm_place *place, size_t size) { -return !place->lpfn ||amdgpu_gtt_mgr_has_gart_addr (res); +const struct drm_mm_node *const node = &to_ttm_range_mgr_node (res)->mm_nodes[0 ]; +const u32 num_pages =PFN_UP (size); + +if (!place->lpfn) +return true; + +if (!amdgpu_gtt_mgr_has_gart_addr (res)) +return false; + +if (node->start < place->fpfn || + (place->lpfn && (node->start + num_pages) > place->lpfn)) +return false; + +return true; }/**
Sasha Levin
maintainerPATCH 1/1 drm/amdgpu: Respect placement requirements in amdgpu_gtt_mgr functions
From: Timur Kristóf <[email protected]>
[ Upstream commit 8882f8897e554053af9e72f4c2da8b1e2cce56c7 ]
When testing intersection and compatibility, respect the actual placement requirements. This is a pre-requisite for ensuring that UVD CS BOs do not cross 256M segments.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 30 +++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c +28 -2
@@ -219,7 +219,20 @@ static bool amdgpu_gtt_mgr_intersects(struct ttm_resource_manager *man, const struct ttm_place *place, size_t size) { -return !place->lpfn ||amdgpu_gtt_mgr_has_gart_addr (res); +const struct drm_mm_node *const node = &to_ttm_range_mgr_node (res)->mm_nodes[0 ]; +const u32 num_pages =PFN_UP (size); + +if (!place->lpfn) +return true; + +if (!amdgpu_gtt_mgr_has_gart_addr (res)) +return false; + +if (place->fpfn >= (node->start + num_pages) || + (place->lpfn && place->lpfn <= node->start)) +return false; + +return true; }/**
@@ -237,7 +250,20 @@ static bool amdgpu_gtt_mgr_compatible(struct ttm_resource_manager *man, const struct ttm_place *place, size_t size) { -return !place->lpfn ||amdgpu_gtt_mgr_has_gart_addr (res); +const struct drm_mm_node *const node = &to_ttm_range_mgr_node (res)->mm_nodes[0 ]; +const u32 num_pages =PFN_UP (size); + +if (!place->lpfn) +return true; + +if (!amdgpu_gtt_mgr_has_gart_addr (res)) +return false; + +if (node->start < place->fpfn || + (place->lpfn && (node->start + num_pages) > place->lpfn)) +return false; + +return true; }/**
Signature · 1 line
2.53.0