mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-05-24 10:39:52 +00:00
drm/amdgpu/vce: set the priority for each ring
VCE has multiple rings. Set the proper priority level for each ring while initializing. Signed-off-by: Satyajit Sahu <satyajit.sahu@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
a0a2f7bb22
commit
080e613c74
5 changed files with 24 additions and 3 deletions
|
@ -1167,3 +1167,17 @@ error:
|
||||||
amdgpu_bo_free_kernel(&bo, NULL, NULL);
|
amdgpu_bo_free_kernel(&bo, NULL, NULL);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum amdgpu_ring_priority_level amdgpu_vce_get_ring_prio(int ring)
|
||||||
|
{
|
||||||
|
switch(ring) {
|
||||||
|
case 0:
|
||||||
|
return AMDGPU_RING_PRIO_0;
|
||||||
|
case 1:
|
||||||
|
return AMDGPU_RING_PRIO_1;
|
||||||
|
case 2:
|
||||||
|
return AMDGPU_RING_PRIO_2;
|
||||||
|
default:
|
||||||
|
return AMDGPU_RING_PRIO_0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -71,5 +71,6 @@ void amdgpu_vce_ring_begin_use(struct amdgpu_ring *ring);
|
||||||
void amdgpu_vce_ring_end_use(struct amdgpu_ring *ring);
|
void amdgpu_vce_ring_end_use(struct amdgpu_ring *ring);
|
||||||
unsigned amdgpu_vce_ring_get_emit_ib_size(struct amdgpu_ring *ring);
|
unsigned amdgpu_vce_ring_get_emit_ib_size(struct amdgpu_ring *ring);
|
||||||
unsigned amdgpu_vce_ring_get_dma_frame_size(struct amdgpu_ring *ring);
|
unsigned amdgpu_vce_ring_get_dma_frame_size(struct amdgpu_ring *ring);
|
||||||
|
enum amdgpu_ring_priority_level amdgpu_vce_get_ring_prio(int ring);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -431,10 +431,12 @@ static int vce_v2_0_sw_init(void *handle)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
for (i = 0; i < adev->vce.num_rings; i++) {
|
for (i = 0; i < adev->vce.num_rings; i++) {
|
||||||
|
enum amdgpu_ring_priority_level hw_prio = amdgpu_vce_get_ring_prio(i);
|
||||||
|
|
||||||
ring = &adev->vce.ring[i];
|
ring = &adev->vce.ring[i];
|
||||||
sprintf(ring->name, "vce%d", i);
|
sprintf(ring->name, "vce%d", i);
|
||||||
r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
|
r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
|
||||||
AMDGPU_RING_PRIO_DEFAULT, NULL);
|
hw_prio, NULL);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
|
@ -440,10 +440,12 @@ static int vce_v3_0_sw_init(void *handle)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
for (i = 0; i < adev->vce.num_rings; i++) {
|
for (i = 0; i < adev->vce.num_rings; i++) {
|
||||||
|
enum amdgpu_ring_priority_level hw_prio = amdgpu_vce_get_ring_prio(i);
|
||||||
|
|
||||||
ring = &adev->vce.ring[i];
|
ring = &adev->vce.ring[i];
|
||||||
sprintf(ring->name, "vce%d", i);
|
sprintf(ring->name, "vce%d", i);
|
||||||
r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
|
r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
|
||||||
AMDGPU_RING_PRIO_DEFAULT, NULL);
|
hw_prio, NULL);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
|
@ -463,6 +463,8 @@ static int vce_v4_0_sw_init(void *handle)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < adev->vce.num_rings; i++) {
|
for (i = 0; i < adev->vce.num_rings; i++) {
|
||||||
|
enum amdgpu_ring_priority_level hw_prio = amdgpu_vce_get_ring_prio(i);
|
||||||
|
|
||||||
ring = &adev->vce.ring[i];
|
ring = &adev->vce.ring[i];
|
||||||
sprintf(ring->name, "vce%d", i);
|
sprintf(ring->name, "vce%d", i);
|
||||||
if (amdgpu_sriov_vf(adev)) {
|
if (amdgpu_sriov_vf(adev)) {
|
||||||
|
@ -478,7 +480,7 @@ static int vce_v4_0_sw_init(void *handle)
|
||||||
ring->doorbell_index = adev->doorbell_index.uvd_vce.vce_ring2_3 * 2 + 1;
|
ring->doorbell_index = adev->doorbell_index.uvd_vce.vce_ring2_3 * 2 + 1;
|
||||||
}
|
}
|
||||||
r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
|
r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
|
||||||
AMDGPU_RING_PRIO_DEFAULT, NULL);
|
hw_prio, NULL);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue