mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
drm/amdgpu: remove ring lru handling
Not needed any more. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
869a53d4d7
commit
86275d090f
2 changed files with 0 additions and 103 deletions
|
@ -135,9 +135,6 @@ void amdgpu_ring_commit(struct amdgpu_ring *ring)
|
||||||
|
|
||||||
if (ring->funcs->end_use)
|
if (ring->funcs->end_use)
|
||||||
ring->funcs->end_use(ring);
|
ring->funcs->end_use(ring);
|
||||||
|
|
||||||
if (ring->funcs->type != AMDGPU_RING_TYPE_KIQ)
|
|
||||||
amdgpu_ring_lru_touch(ring->adev, ring);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -320,8 +317,6 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
|
||||||
ring->max_dw = max_dw;
|
ring->max_dw = max_dw;
|
||||||
ring->priority = DRM_SCHED_PRIORITY_NORMAL;
|
ring->priority = DRM_SCHED_PRIORITY_NORMAL;
|
||||||
mutex_init(&ring->priority_mutex);
|
mutex_init(&ring->priority_mutex);
|
||||||
INIT_LIST_HEAD(&ring->lru_list);
|
|
||||||
amdgpu_ring_lru_touch(adev, ring);
|
|
||||||
|
|
||||||
for (i = 0; i < DRM_SCHED_PRIORITY_MAX; ++i)
|
for (i = 0; i < DRM_SCHED_PRIORITY_MAX; ++i)
|
||||||
atomic_set(&ring->num_jobs[i], 0);
|
atomic_set(&ring->num_jobs[i], 0);
|
||||||
|
@ -368,99 +363,6 @@ void amdgpu_ring_fini(struct amdgpu_ring *ring)
|
||||||
ring->adev->rings[ring->idx] = NULL;
|
ring->adev->rings[ring->idx] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void amdgpu_ring_lru_touch_locked(struct amdgpu_device *adev,
|
|
||||||
struct amdgpu_ring *ring)
|
|
||||||
{
|
|
||||||
/* list_move_tail handles the case where ring isn't part of the list */
|
|
||||||
list_move_tail(&ring->lru_list, &adev->ring_lru_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool amdgpu_ring_is_blacklisted(struct amdgpu_ring *ring,
|
|
||||||
int *blacklist, int num_blacklist)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < num_blacklist; i++) {
|
|
||||||
if (ring->idx == blacklist[i])
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* amdgpu_ring_lru_get - get the least recently used ring for a HW IP block
|
|
||||||
*
|
|
||||||
* @adev: amdgpu_device pointer
|
|
||||||
* @type: amdgpu_ring_type enum
|
|
||||||
* @blacklist: blacklisted ring ids array
|
|
||||||
* @num_blacklist: number of entries in @blacklist
|
|
||||||
* @lru_pipe_order: find a ring from the least recently used pipe
|
|
||||||
* @ring: output ring
|
|
||||||
*
|
|
||||||
* Retrieve the amdgpu_ring structure for the least recently used ring of
|
|
||||||
* a specific IP block (all asics).
|
|
||||||
* Returns 0 on success, error on failure.
|
|
||||||
*/
|
|
||||||
int amdgpu_ring_lru_get(struct amdgpu_device *adev, int type,
|
|
||||||
int *blacklist, int num_blacklist,
|
|
||||||
bool lru_pipe_order, struct amdgpu_ring **ring)
|
|
||||||
{
|
|
||||||
struct amdgpu_ring *entry;
|
|
||||||
|
|
||||||
/* List is sorted in LRU order, find first entry corresponding
|
|
||||||
* to the desired HW IP */
|
|
||||||
*ring = NULL;
|
|
||||||
spin_lock(&adev->ring_lru_list_lock);
|
|
||||||
list_for_each_entry(entry, &adev->ring_lru_list, lru_list) {
|
|
||||||
if (entry->funcs->type != type)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (amdgpu_ring_is_blacklisted(entry, blacklist, num_blacklist))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!*ring) {
|
|
||||||
*ring = entry;
|
|
||||||
|
|
||||||
/* We are done for ring LRU */
|
|
||||||
if (!lru_pipe_order)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Move all rings on the same pipe to the end of the list */
|
|
||||||
if (entry->pipe == (*ring)->pipe)
|
|
||||||
amdgpu_ring_lru_touch_locked(adev, entry);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Move the ring we found to the end of the list */
|
|
||||||
if (*ring)
|
|
||||||
amdgpu_ring_lru_touch_locked(adev, *ring);
|
|
||||||
|
|
||||||
spin_unlock(&adev->ring_lru_list_lock);
|
|
||||||
|
|
||||||
if (!*ring) {
|
|
||||||
DRM_ERROR("Ring LRU contains no entries for ring type:%d\n", type);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* amdgpu_ring_lru_touch - mark a ring as recently being used
|
|
||||||
*
|
|
||||||
* @adev: amdgpu_device pointer
|
|
||||||
* @ring: ring to touch
|
|
||||||
*
|
|
||||||
* Move @ring to the tail of the lru list
|
|
||||||
*/
|
|
||||||
void amdgpu_ring_lru_touch(struct amdgpu_device *adev, struct amdgpu_ring *ring)
|
|
||||||
{
|
|
||||||
spin_lock(&adev->ring_lru_list_lock);
|
|
||||||
amdgpu_ring_lru_touch_locked(adev, ring);
|
|
||||||
spin_unlock(&adev->ring_lru_list_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* amdgpu_ring_emit_reg_write_reg_wait_helper - ring helper
|
* amdgpu_ring_emit_reg_write_reg_wait_helper - ring helper
|
||||||
*
|
*
|
||||||
|
|
|
@ -175,7 +175,6 @@ struct amdgpu_ring {
|
||||||
const struct amdgpu_ring_funcs *funcs;
|
const struct amdgpu_ring_funcs *funcs;
|
||||||
struct amdgpu_fence_driver fence_drv;
|
struct amdgpu_fence_driver fence_drv;
|
||||||
struct drm_gpu_scheduler sched;
|
struct drm_gpu_scheduler sched;
|
||||||
struct list_head lru_list;
|
|
||||||
|
|
||||||
struct amdgpu_bo *ring_obj;
|
struct amdgpu_bo *ring_obj;
|
||||||
volatile uint32_t *ring;
|
volatile uint32_t *ring;
|
||||||
|
@ -258,10 +257,6 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
|
||||||
unsigned ring_size, struct amdgpu_irq_src *irq_src,
|
unsigned ring_size, struct amdgpu_irq_src *irq_src,
|
||||||
unsigned irq_type);
|
unsigned irq_type);
|
||||||
void amdgpu_ring_fini(struct amdgpu_ring *ring);
|
void amdgpu_ring_fini(struct amdgpu_ring *ring);
|
||||||
int amdgpu_ring_lru_get(struct amdgpu_device *adev, int type,
|
|
||||||
int *blacklist, int num_blacklist,
|
|
||||||
bool lru_pipe_order, struct amdgpu_ring **ring);
|
|
||||||
void amdgpu_ring_lru_touch(struct amdgpu_device *adev, struct amdgpu_ring *ring);
|
|
||||||
void amdgpu_ring_emit_reg_write_reg_wait_helper(struct amdgpu_ring *ring,
|
void amdgpu_ring_emit_reg_write_reg_wait_helper(struct amdgpu_ring *ring,
|
||||||
uint32_t reg0, uint32_t val0,
|
uint32_t reg0, uint32_t val0,
|
||||||
uint32_t reg1, uint32_t val1);
|
uint32_t reg1, uint32_t val1);
|
||||||
|
|
Loading…
Reference in a new issue