summaryrefslogtreecommitdiffstats
path: root/include/drm
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2023-12-06 16:37:29 +0100
committerChristian König <christian.koenig@amd.com>2024-03-01 17:11:16 +0100
commitcc941c70df3927be89dfb875a9b3cec3ef5cf2c8 (patch)
treeb9364dd99a76531b217e679e01b35531e86e7f63 /include/drm
parent6f6eebcf7f508c367bd77d7846d62b6e17147937 (diff)
downloadlinux-cc941c70df3927be89dfb875a9b3cec3ef5cf2c8.tar.gz
linux-cc941c70df3927be89dfb875a9b3cec3ef5cf2c8.tar.bz2
linux-cc941c70df3927be89dfb875a9b3cec3ef5cf2c8.zip
drm/ttm: improve idle/busy handling v5
Previously we would never try to move a BO into the preferred placements when it ever landed in a busy placement since those were considered compatible. Rework the whole handling and finally unify the idle and busy handling. ttm_bo_validate() is now responsible to try idle placement first and then use the busy placement if that didn't worked. Drawback is that we now always try the idle placement first for each validation which might cause some additional CPU overhead on overcommit. v2: fix kerneldoc warning and coding style v3: take care of XE as well v4: keep the ttm_bo_mem_space functionality as it is for now, only add new handling for ttm_bo_validate as suggested by Thomas v5: fix bug pointed out by Matthew Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Zack Rusin <zack.rusin@broadcom.com> v3 Link: https://patchwork.freedesktop.org/patch/msgid/20240229134003.3688-1-christian.koenig@amd.com Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/ttm/ttm_resource.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/drm/ttm/ttm_resource.h b/include/drm/ttm/ttm_resource.h
index 1afa13f0c22b..7561023db43d 100644
--- a/include/drm/ttm/ttm_resource.h
+++ b/include/drm/ttm/ttm_resource.h
@@ -366,7 +366,8 @@ bool ttm_resource_intersects(struct ttm_device *bdev,
const struct ttm_place *place,
size_t size);
bool ttm_resource_compatible(struct ttm_resource *res,
- struct ttm_placement *placement);
+ struct ttm_placement *placement,
+ bool evicting);
void ttm_resource_set_bo(struct ttm_resource *res,
struct ttm_buffer_object *bo);