Commit 260498f2 authored by Christian König's avatar Christian König Committed by Alex Deucher

drm/ttm: revert "implement LRU add callbacks v2"

The additional housekeeping had too much CPU overhead,
let's use the BO priorities instead.

agd: also revert hibmc changes
Reviewed-by: default avatarSinclair Yeh <syeh@vmware.com>
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-and-Tested-by: default avatarRoger.He <Hongbo.He@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 373308a5
...@@ -1086,8 +1086,6 @@ static struct ttm_bo_driver amdgpu_bo_driver = { ...@@ -1086,8 +1086,6 @@ static struct ttm_bo_driver amdgpu_bo_driver = {
.fault_reserve_notify = &amdgpu_bo_fault_reserve_notify, .fault_reserve_notify = &amdgpu_bo_fault_reserve_notify,
.io_mem_reserve = &amdgpu_ttm_io_mem_reserve, .io_mem_reserve = &amdgpu_ttm_io_mem_reserve,
.io_mem_free = &amdgpu_ttm_io_mem_free, .io_mem_free = &amdgpu_ttm_io_mem_free,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
int amdgpu_ttm_init(struct amdgpu_device *adev) int amdgpu_ttm_init(struct amdgpu_device *adev)
......
...@@ -236,8 +236,6 @@ struct ttm_bo_driver ast_bo_driver = { ...@@ -236,8 +236,6 @@ struct ttm_bo_driver ast_bo_driver = {
.verify_access = ast_bo_verify_access, .verify_access = ast_bo_verify_access,
.io_mem_reserve = &ast_ttm_io_mem_reserve, .io_mem_reserve = &ast_ttm_io_mem_reserve,
.io_mem_free = &ast_ttm_io_mem_free, .io_mem_free = &ast_ttm_io_mem_free,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
int ast_mm_init(struct ast_private *ast) int ast_mm_init(struct ast_private *ast)
......
...@@ -205,8 +205,6 @@ struct ttm_bo_driver bochs_bo_driver = { ...@@ -205,8 +205,6 @@ struct ttm_bo_driver bochs_bo_driver = {
.verify_access = bochs_bo_verify_access, .verify_access = bochs_bo_verify_access,
.io_mem_reserve = &bochs_ttm_io_mem_reserve, .io_mem_reserve = &bochs_ttm_io_mem_reserve,
.io_mem_free = &bochs_ttm_io_mem_free, .io_mem_free = &bochs_ttm_io_mem_free,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
int bochs_mm_init(struct bochs_device *bochs) int bochs_mm_init(struct bochs_device *bochs)
......
...@@ -236,8 +236,6 @@ struct ttm_bo_driver cirrus_bo_driver = { ...@@ -236,8 +236,6 @@ struct ttm_bo_driver cirrus_bo_driver = {
.verify_access = cirrus_bo_verify_access, .verify_access = cirrus_bo_verify_access,
.io_mem_reserve = &cirrus_ttm_io_mem_reserve, .io_mem_reserve = &cirrus_ttm_io_mem_reserve,
.io_mem_free = &cirrus_ttm_io_mem_free, .io_mem_free = &cirrus_ttm_io_mem_free,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
int cirrus_mm_init(struct cirrus_device *cirrus) int cirrus_mm_init(struct cirrus_device *cirrus)
......
...@@ -243,8 +243,6 @@ struct ttm_bo_driver hibmc_bo_driver = { ...@@ -243,8 +243,6 @@ struct ttm_bo_driver hibmc_bo_driver = {
.verify_access = hibmc_bo_verify_access, .verify_access = hibmc_bo_verify_access,
.io_mem_reserve = &hibmc_ttm_io_mem_reserve, .io_mem_reserve = &hibmc_ttm_io_mem_reserve,
.io_mem_free = NULL, .io_mem_free = NULL,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
int hibmc_mm_init(struct hibmc_drm_private *hibmc) int hibmc_mm_init(struct hibmc_drm_private *hibmc)
......
...@@ -236,8 +236,6 @@ struct ttm_bo_driver mgag200_bo_driver = { ...@@ -236,8 +236,6 @@ struct ttm_bo_driver mgag200_bo_driver = {
.verify_access = mgag200_bo_verify_access, .verify_access = mgag200_bo_verify_access,
.io_mem_reserve = &mgag200_ttm_io_mem_reserve, .io_mem_reserve = &mgag200_ttm_io_mem_reserve,
.io_mem_free = &mgag200_ttm_io_mem_free, .io_mem_free = &mgag200_ttm_io_mem_free,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
int mgag200_mm_init(struct mga_device *mdev) int mgag200_mm_init(struct mga_device *mdev)
......
...@@ -1571,8 +1571,6 @@ struct ttm_bo_driver nouveau_bo_driver = { ...@@ -1571,8 +1571,6 @@ struct ttm_bo_driver nouveau_bo_driver = {
.fault_reserve_notify = &nouveau_ttm_fault_reserve_notify, .fault_reserve_notify = &nouveau_ttm_fault_reserve_notify,
.io_mem_reserve = &nouveau_ttm_io_mem_reserve, .io_mem_reserve = &nouveau_ttm_io_mem_reserve,
.io_mem_free = &nouveau_ttm_io_mem_free, .io_mem_free = &nouveau_ttm_io_mem_free,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
struct nvkm_vma * struct nvkm_vma *
......
...@@ -394,8 +394,6 @@ static struct ttm_bo_driver qxl_bo_driver = { ...@@ -394,8 +394,6 @@ static struct ttm_bo_driver qxl_bo_driver = {
.io_mem_reserve = &qxl_ttm_io_mem_reserve, .io_mem_reserve = &qxl_ttm_io_mem_reserve,
.io_mem_free = &qxl_ttm_io_mem_free, .io_mem_free = &qxl_ttm_io_mem_free,
.move_notify = &qxl_bo_move_notify, .move_notify = &qxl_bo_move_notify,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
int qxl_ttm_init(struct qxl_device *qdev) int qxl_ttm_init(struct qxl_device *qdev)
......
...@@ -871,8 +871,6 @@ static struct ttm_bo_driver radeon_bo_driver = { ...@@ -871,8 +871,6 @@ static struct ttm_bo_driver radeon_bo_driver = {
.fault_reserve_notify = &radeon_bo_fault_reserve_notify, .fault_reserve_notify = &radeon_bo_fault_reserve_notify,
.io_mem_reserve = &radeon_ttm_io_mem_reserve, .io_mem_reserve = &radeon_ttm_io_mem_reserve,
.io_mem_free = &radeon_ttm_io_mem_free, .io_mem_free = &radeon_ttm_io_mem_free,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
int radeon_ttm_init(struct radeon_device *rdev) int radeon_ttm_init(struct radeon_device *rdev)
......
...@@ -163,6 +163,7 @@ static void ttm_bo_release_list(struct kref *list_kref) ...@@ -163,6 +163,7 @@ static void ttm_bo_release_list(struct kref *list_kref)
void ttm_bo_add_to_lru(struct ttm_buffer_object *bo) void ttm_bo_add_to_lru(struct ttm_buffer_object *bo)
{ {
struct ttm_bo_device *bdev = bo->bdev; struct ttm_bo_device *bdev = bo->bdev;
struct ttm_mem_type_manager *man;
lockdep_assert_held(&bo->resv->lock.base); lockdep_assert_held(&bo->resv->lock.base);
...@@ -170,11 +171,13 @@ void ttm_bo_add_to_lru(struct ttm_buffer_object *bo) ...@@ -170,11 +171,13 @@ void ttm_bo_add_to_lru(struct ttm_buffer_object *bo)
BUG_ON(!list_empty(&bo->lru)); BUG_ON(!list_empty(&bo->lru));
list_add(&bo->lru, bdev->driver->lru_tail(bo)); man = &bdev->man[bo->mem.mem_type];
list_add_tail(&bo->lru, &man->lru[bo->priority]);
kref_get(&bo->list_kref); kref_get(&bo->list_kref);
if (bo->ttm && !(bo->ttm->page_flags & TTM_PAGE_FLAG_SG)) { if (bo->ttm && !(bo->ttm->page_flags & TTM_PAGE_FLAG_SG)) {
list_add(&bo->swap, bdev->driver->swap_lru_tail(bo)); list_add_tail(&bo->swap,
&bo->glob->swap_lru[bo->priority]);
kref_get(&bo->list_kref); kref_get(&bo->list_kref);
} }
} }
...@@ -240,18 +243,6 @@ void ttm_bo_move_to_lru_tail(struct ttm_buffer_object *bo) ...@@ -240,18 +243,6 @@ void ttm_bo_move_to_lru_tail(struct ttm_buffer_object *bo)
} }
EXPORT_SYMBOL(ttm_bo_move_to_lru_tail); EXPORT_SYMBOL(ttm_bo_move_to_lru_tail);
struct list_head *ttm_bo_default_lru_tail(struct ttm_buffer_object *bo)
{
return bo->bdev->man[bo->mem.mem_type].lru[bo->priority].prev;
}
EXPORT_SYMBOL(ttm_bo_default_lru_tail);
struct list_head *ttm_bo_default_swap_lru_tail(struct ttm_buffer_object *bo)
{
return bo->glob->swap_lru[bo->priority].prev;
}
EXPORT_SYMBOL(ttm_bo_default_swap_lru_tail);
/* /*
* Call bo->mutex locked. * Call bo->mutex locked.
*/ */
......
...@@ -434,8 +434,6 @@ static struct ttm_bo_driver virtio_gpu_bo_driver = { ...@@ -434,8 +434,6 @@ static struct ttm_bo_driver virtio_gpu_bo_driver = {
.io_mem_free = &virtio_gpu_ttm_io_mem_free, .io_mem_free = &virtio_gpu_ttm_io_mem_free,
.move_notify = &virtio_gpu_bo_move_notify, .move_notify = &virtio_gpu_bo_move_notify,
.swap_notify = &virtio_gpu_bo_swap_notify, .swap_notify = &virtio_gpu_bo_swap_notify,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
int virtio_gpu_ttm_init(struct virtio_gpu_device *vgdev) int virtio_gpu_ttm_init(struct virtio_gpu_device *vgdev)
......
...@@ -859,6 +859,4 @@ struct ttm_bo_driver vmw_bo_driver = { ...@@ -859,6 +859,4 @@ struct ttm_bo_driver vmw_bo_driver = {
.fault_reserve_notify = &vmw_ttm_fault_reserve_notify, .fault_reserve_notify = &vmw_ttm_fault_reserve_notify,
.io_mem_reserve = &vmw_ttm_io_mem_reserve, .io_mem_reserve = &vmw_ttm_io_mem_reserve,
.io_mem_free = &vmw_ttm_io_mem_free, .io_mem_free = &vmw_ttm_io_mem_free,
.lru_tail = &ttm_bo_default_lru_tail,
.swap_lru_tail = &ttm_bo_default_swap_lru_tail,
}; };
...@@ -468,12 +468,6 @@ struct ttm_bo_driver { ...@@ -468,12 +468,6 @@ struct ttm_bo_driver {
* Called with LRU lock held immediately before the removal. * Called with LRU lock held immediately before the removal.
*/ */
void (*lru_removal)(struct ttm_buffer_object *bo); void (*lru_removal)(struct ttm_buffer_object *bo);
/**
* Return the list_head after which a BO should be inserted in the LRU.
*/
struct list_head *(*lru_tail)(struct ttm_buffer_object *bo);
struct list_head *(*swap_lru_tail)(struct ttm_buffer_object *bo);
}; };
/** /**
...@@ -788,9 +782,6 @@ extern void ttm_mem_io_unlock(struct ttm_mem_type_manager *man); ...@@ -788,9 +782,6 @@ extern void ttm_mem_io_unlock(struct ttm_mem_type_manager *man);
extern void ttm_bo_del_sub_from_lru(struct ttm_buffer_object *bo); extern void ttm_bo_del_sub_from_lru(struct ttm_buffer_object *bo);
extern void ttm_bo_add_to_lru(struct ttm_buffer_object *bo); extern void ttm_bo_add_to_lru(struct ttm_buffer_object *bo);
struct list_head *ttm_bo_default_lru_tail(struct ttm_buffer_object *bo);
struct list_head *ttm_bo_default_swap_lru_tail(struct ttm_buffer_object *bo);
/** /**
* __ttm_bo_reserve: * __ttm_bo_reserve:
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment