mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-28 23:59:55 -04:00
drm/ttm: Don't count pages in SG BOs against pages_limit
Pages in SG BOs were not allocated by TTM. So don't count them against TTM's pages limit. Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Christian König <christian.koenig@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210414064804.29356-9-Felix.Kuehling@amd.com
This commit is contained in:
committed by
Christian König
parent
603dc7ed91
commit
2b173d7fc2
@@ -317,9 +317,12 @@ int ttm_tt_populate(struct ttm_device *bdev,
|
||||
if (ttm_tt_is_populated(ttm))
|
||||
return 0;
|
||||
|
||||
atomic_long_add(ttm->num_pages, &ttm_pages_allocated);
|
||||
if (bdev->pool.use_dma32)
|
||||
atomic_long_add(ttm->num_pages, &ttm_dma32_pages_allocated);
|
||||
if (!(ttm->page_flags & TTM_PAGE_FLAG_SG)) {
|
||||
atomic_long_add(ttm->num_pages, &ttm_pages_allocated);
|
||||
if (bdev->pool.use_dma32)
|
||||
atomic_long_add(ttm->num_pages,
|
||||
&ttm_dma32_pages_allocated);
|
||||
}
|
||||
|
||||
while (atomic_long_read(&ttm_pages_allocated) > ttm_pages_limit ||
|
||||
atomic_long_read(&ttm_dma32_pages_allocated) >
|
||||
@@ -350,9 +353,12 @@ int ttm_tt_populate(struct ttm_device *bdev,
|
||||
return 0;
|
||||
|
||||
error:
|
||||
atomic_long_sub(ttm->num_pages, &ttm_pages_allocated);
|
||||
if (bdev->pool.use_dma32)
|
||||
atomic_long_sub(ttm->num_pages, &ttm_dma32_pages_allocated);
|
||||
if (!(ttm->page_flags & TTM_PAGE_FLAG_SG)) {
|
||||
atomic_long_sub(ttm->num_pages, &ttm_pages_allocated);
|
||||
if (bdev->pool.use_dma32)
|
||||
atomic_long_sub(ttm->num_pages,
|
||||
&ttm_dma32_pages_allocated);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(ttm_tt_populate);
|
||||
@@ -382,9 +388,12 @@ void ttm_tt_unpopulate(struct ttm_device *bdev, struct ttm_tt *ttm)
|
||||
else
|
||||
ttm_pool_free(&bdev->pool, ttm);
|
||||
|
||||
atomic_long_sub(ttm->num_pages, &ttm_pages_allocated);
|
||||
if (bdev->pool.use_dma32)
|
||||
atomic_long_sub(ttm->num_pages, &ttm_dma32_pages_allocated);
|
||||
if (!(ttm->page_flags & TTM_PAGE_FLAG_SG)) {
|
||||
atomic_long_sub(ttm->num_pages, &ttm_pages_allocated);
|
||||
if (bdev->pool.use_dma32)
|
||||
atomic_long_sub(ttm->num_pages,
|
||||
&ttm_dma32_pages_allocated);
|
||||
}
|
||||
|
||||
ttm->page_flags &= ~TTM_PAGE_FLAG_PRIV_POPULATED;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user