mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2026-01-07 18:38:57 +01:00
drm/amdgpu: assign the doorbell index in 1st page to sdma page queue
Previously for vega10, the sdma_doorbell_range is only enough for sdma gfx queue, thus the index on second doorbell page is allocated for sdma page queue. From vega20, the sdma_doorbell_range on 1st page is enlarged. Therefore, just leverage these index instead of allocation on 2nd page. v2: change "(x << 1) + 2" to "(x + 1) << 1" for readability and add comments. Signed-off-by: Le Ma <le.ma@amd.com> Acked-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
d255558661
commit
0ee20b8696
|
|
@ -1091,7 +1091,8 @@ static int amdgpu_device_doorbell_init(struct amdgpu_device *adev)
|
|||
* doorbells are in the first page. So with paging queue enabled,
|
||||
* the max num_kernel_doorbells should + 1 page (0x400 in dword)
|
||||
*/
|
||||
if (adev->asic_type >= CHIP_VEGA10)
|
||||
if (adev->ip_versions[SDMA0_HWIP][0] >= IP_VERSION(4, 0, 0) &&
|
||||
adev->ip_versions[SDMA0_HWIP][0] < IP_VERSION(4, 2, 0))
|
||||
adev->doorbell.num_kernel_doorbells += 0x400;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1847,8 +1847,18 @@ static int sdma_v4_0_sw_init(void *handle)
|
|||
/* paging queue use same doorbell index/routing as gfx queue
|
||||
* with 0x400 (4096 dwords) offset on second doorbell page
|
||||
*/
|
||||
ring->doorbell_index = adev->doorbell_index.sdma_engine[i] << 1;
|
||||
ring->doorbell_index += 0x400;
|
||||
if (adev->ip_versions[SDMA0_HWIP][0] >= IP_VERSION(4, 0, 0) &&
|
||||
adev->ip_versions[SDMA0_HWIP][0] < IP_VERSION(4, 2, 0)) {
|
||||
ring->doorbell_index =
|
||||
adev->doorbell_index.sdma_engine[i] << 1;
|
||||
ring->doorbell_index += 0x400;
|
||||
} else {
|
||||
/* From vega20, the sdma_doorbell_range in 1st
|
||||
* doorbell page is reserved for page queue.
|
||||
*/
|
||||
ring->doorbell_index =
|
||||
(adev->doorbell_index.sdma_engine[i] + 1) << 1;
|
||||
}
|
||||
|
||||
if (adev->ip_versions[SDMA0_HWIP][0] == IP_VERSION(4, 2, 2) && i >= 5)
|
||||
ring->vm_hub = AMDGPU_MMHUB1(0);
|
||||
|
|
|
|||
|
|
@ -1323,11 +1323,10 @@ static int sdma_v4_4_2_sw_init(void *handle)
|
|||
ring->ring_obj = NULL;
|
||||
ring->use_doorbell = true;
|
||||
|
||||
/* paging queue use same doorbell index/routing as gfx queue
|
||||
* with 0x400 (4096 dwords) offset on second doorbell page
|
||||
/* doorbell index of page queue is assigned right after
|
||||
* gfx queue on the same instance
|
||||
*/
|
||||
ring->doorbell_index = adev->doorbell_index.sdma_engine[i] << 1;
|
||||
ring->doorbell_index += 0x400;
|
||||
ring->doorbell_index = (adev->doorbell_index.sdma_engine[i] + 1) << 1;
|
||||
ring->vm_hub = AMDGPU_MMHUB0(0);
|
||||
|
||||
sprintf(ring->name, "page%d", i);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user