mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
drm/amdgpu: Respect placement requirements in amdgpu_gtt_mgr functions
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.
Fixes: ded910f368 ("drm/amdgpu: Implement intersect/compatible functions")
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit bc06579ca29dee9c245a41b12e39c7bb6938af5d)
Cc: stable@vger.kernel.org
This commit is contained in:
parent
c1dc4ccb82
commit
8882f8897e
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user