mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-27 03:58:31 -04:00
drm/amdgpu: freeing pinned objects is illegal now
We want to drop support in TTM for this. Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Leo Liu <leo.liu@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210415084730.2057-2-christian.koenig@amd.com
This commit is contained in:
@@ -52,35 +52,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* amdgpu_bo_subtract_pin_size - Remove BO from pin_size accounting
|
|
||||||
*
|
|
||||||
* @bo: &amdgpu_bo buffer object
|
|
||||||
*
|
|
||||||
* This function is called when a BO stops being pinned, and updates the
|
|
||||||
* &amdgpu_device pin_size values accordingly.
|
|
||||||
*/
|
|
||||||
static void amdgpu_bo_subtract_pin_size(struct amdgpu_bo *bo)
|
|
||||||
{
|
|
||||||
struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
|
|
||||||
|
|
||||||
if (bo->tbo.mem.mem_type == TTM_PL_VRAM) {
|
|
||||||
atomic64_sub(amdgpu_bo_size(bo), &adev->vram_pin_size);
|
|
||||||
atomic64_sub(amdgpu_vram_mgr_bo_visible_size(bo),
|
|
||||||
&adev->visible_pin_size);
|
|
||||||
} else if (bo->tbo.mem.mem_type == TTM_PL_TT) {
|
|
||||||
atomic64_sub(amdgpu_bo_size(bo), &adev->gart_pin_size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void amdgpu_bo_destroy(struct ttm_buffer_object *tbo)
|
static void amdgpu_bo_destroy(struct ttm_buffer_object *tbo)
|
||||||
{
|
{
|
||||||
struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
|
struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
|
||||||
struct amdgpu_bo *bo = ttm_to_amdgpu_bo(tbo);
|
struct amdgpu_bo *bo = ttm_to_amdgpu_bo(tbo);
|
||||||
|
|
||||||
if (bo->tbo.pin_count > 0)
|
|
||||||
amdgpu_bo_subtract_pin_size(bo);
|
|
||||||
|
|
||||||
amdgpu_bo_kunmap(bo);
|
amdgpu_bo_kunmap(bo);
|
||||||
|
|
||||||
if (bo->tbo.base.import_attach)
|
if (bo->tbo.base.import_attach)
|
||||||
@@ -1000,14 +976,22 @@ int amdgpu_bo_pin(struct amdgpu_bo *bo, u32 domain)
|
|||||||
*/
|
*/
|
||||||
void amdgpu_bo_unpin(struct amdgpu_bo *bo)
|
void amdgpu_bo_unpin(struct amdgpu_bo *bo)
|
||||||
{
|
{
|
||||||
|
struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
|
||||||
|
|
||||||
ttm_bo_unpin(&bo->tbo);
|
ttm_bo_unpin(&bo->tbo);
|
||||||
if (bo->tbo.pin_count)
|
if (bo->tbo.pin_count)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
amdgpu_bo_subtract_pin_size(bo);
|
|
||||||
|
|
||||||
if (bo->tbo.base.import_attach)
|
if (bo->tbo.base.import_attach)
|
||||||
dma_buf_unpin(bo->tbo.base.import_attach);
|
dma_buf_unpin(bo->tbo.base.import_attach);
|
||||||
|
|
||||||
|
if (bo->tbo.mem.mem_type == TTM_PL_VRAM) {
|
||||||
|
atomic64_sub(amdgpu_bo_size(bo), &adev->vram_pin_size);
|
||||||
|
atomic64_sub(amdgpu_vram_mgr_bo_visible_size(bo),
|
||||||
|
&adev->visible_pin_size);
|
||||||
|
} else if (bo->tbo.mem.mem_type == TTM_PL_TT) {
|
||||||
|
atomic64_sub(amdgpu_bo_size(bo), &adev->gart_pin_size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user