Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: correct cp doorbell range

1. move MES doorbell inside the mec doorbell range,
for mes belongs to mec block
2. setting the correct gfx/mec doorbell range, so that
fw can correctly detect gfx/compute work load to enter/exit
power saving state.

Signed-off-by: Jack Xiao <Jack.Xiao@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Tested-and-acked-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Jack Xiao and committed by
Alex Deucher
fd0ed91a ae2d50be

+16 -3
+8 -3
drivers/gpu/drm/amd/amdgpu/amdgpu_doorbell.h
··· 52 52 uint32_t userqueue_end; 53 53 uint32_t gfx_ring0; 54 54 uint32_t gfx_ring1; 55 + uint32_t gfx_userqueue_start; 56 + uint32_t gfx_userqueue_end; 55 57 uint32_t sdma_engine[8]; 56 58 uint32_t mes_ring0; 57 59 uint32_t mes_ring1; ··· 177 175 AMDGPU_NAVI10_DOORBELL_MEC_RING5 = 0x008, 178 176 AMDGPU_NAVI10_DOORBELL_MEC_RING6 = 0x009, 179 177 AMDGPU_NAVI10_DOORBELL_MEC_RING7 = 0x00A, 180 - AMDGPU_NAVI10_DOORBELL_USERQUEUE_START = 0x00B, 178 + AMDGPU_NAVI10_DOORBELL_MES_RING0 = 0x00B, 179 + AMDGPU_NAVI10_DOORBELL_MES_RING1 = 0x00C, 180 + AMDGPU_NAVI10_DOORBELL_USERQUEUE_START = 0x00D, 181 181 AMDGPU_NAVI10_DOORBELL_USERQUEUE_END = 0x08A, 182 182 AMDGPU_NAVI10_DOORBELL_GFX_RING0 = 0x08B, 183 183 AMDGPU_NAVI10_DOORBELL_GFX_RING1 = 0x08C, 184 - AMDGPU_NAVI10_DOORBELL_MES_RING0 = 0x090, 185 - AMDGPU_NAVI10_DOORBELL_MES_RING1 = 0x091, 184 + AMDGPU_NAVI10_DOORBELL_GFX_USERQUEUE_START = 0x08D, 185 + AMDGPU_NAVI10_DOORBELL_GFX_USERQUEUE_END = 0x0FF, 186 + 186 187 /* SDMA:256~335*/ 187 188 AMDGPU_NAVI10_DOORBELL_sDMA_ENGINE0 = 0x100, 188 189 AMDGPU_NAVI10_DOORBELL_sDMA_ENGINE1 = 0x10A,
+4
drivers/gpu/drm/amd/amdgpu/nv.c
··· 607 607 adev->doorbell_index.userqueue_end = AMDGPU_NAVI10_DOORBELL_USERQUEUE_END; 608 608 adev->doorbell_index.gfx_ring0 = AMDGPU_NAVI10_DOORBELL_GFX_RING0; 609 609 adev->doorbell_index.gfx_ring1 = AMDGPU_NAVI10_DOORBELL_GFX_RING1; 610 + adev->doorbell_index.gfx_userqueue_start = 611 + AMDGPU_NAVI10_DOORBELL_GFX_USERQUEUE_START; 612 + adev->doorbell_index.gfx_userqueue_end = 613 + AMDGPU_NAVI10_DOORBELL_GFX_USERQUEUE_END; 610 614 adev->doorbell_index.mes_ring0 = AMDGPU_NAVI10_DOORBELL_MES_RING0; 611 615 adev->doorbell_index.mes_ring1 = AMDGPU_NAVI10_DOORBELL_MES_RING1; 612 616 adev->doorbell_index.sdma_engine[0] = AMDGPU_NAVI10_DOORBELL_sDMA_ENGINE0;
+4
drivers/gpu/drm/amd/amdgpu/soc21.c
··· 409 409 adev->doorbell_index.userqueue_end = AMDGPU_NAVI10_DOORBELL_USERQUEUE_END; 410 410 adev->doorbell_index.gfx_ring0 = AMDGPU_NAVI10_DOORBELL_GFX_RING0; 411 411 adev->doorbell_index.gfx_ring1 = AMDGPU_NAVI10_DOORBELL_GFX_RING1; 412 + adev->doorbell_index.gfx_userqueue_start = 413 + AMDGPU_NAVI10_DOORBELL_GFX_USERQUEUE_START; 414 + adev->doorbell_index.gfx_userqueue_end = 415 + AMDGPU_NAVI10_DOORBELL_GFX_USERQUEUE_END; 412 416 adev->doorbell_index.mes_ring0 = AMDGPU_NAVI10_DOORBELL_MES_RING0; 413 417 adev->doorbell_index.mes_ring1 = AMDGPU_NAVI10_DOORBELL_MES_RING1; 414 418 adev->doorbell_index.sdma_engine[0] = AMDGPU_NAVI10_DOORBELL_sDMA_ENGINE0;