On Mon, Mar 23, 2026 at 2:54 PM Amber Lin <[email protected]> wrote: > > suspend_all_sdma_gangs is supported in new MES firmware for gfx 12.1 > > Signed-off-by: Amber Lin <[email protected]>
Acked-by: Alex Deucher <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 3 +++ > drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h | 1 + > drivers/gpu/drm/amd/amdgpu/mes_v12_1.c | 1 + > 3 files changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c > index fd6b40d9da58..dfe18f0a3501 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c > @@ -311,6 +311,9 @@ int amdgpu_mes_suspend(struct amdgpu_device *adev, > uint32_t xcc_id) > memset(&input, 0x0, sizeof(struct mes_suspend_gang_input)); > input.suspend_all_gangs = 1; > input.xcc_id = xcc_id; > + if ((amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(12, 1, 0)) && > + ((adev->mes.sched_version & AMDGPU_MES_VERSION_MASK) >= 0x71)) > + input.suspend_all_sdma_gangs = 1; > > /* > * Avoid taking any other locks under MES lock to avoid circular > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h > index 44fa4d73bce8..2d08e33eb1e9 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h > @@ -298,6 +298,7 @@ struct mes_unmap_legacy_queue_input { > struct mes_suspend_gang_input { > uint32_t xcc_id; > bool suspend_all_gangs; > + bool suspend_all_sdma_gangs; > uint64_t gang_context_addr; > uint64_t suspend_fence_addr; > uint32_t suspend_fence_value; > diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c > b/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c > index ac9e26b8bb52..8a0c3dc0ecb7 100644 > --- a/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c > +++ b/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c > @@ -479,6 +479,7 @@ static int mes_v12_1_suspend_gang(struct amdgpu_mes *mes, > mes_suspend_gang_pkt.header.dwsize = API_FRAME_SIZE_IN_DWORDS; > > mes_suspend_gang_pkt.suspend_all_gangs = input->suspend_all_gangs; > + mes_suspend_gang_pkt.suspend_all_sdma_gangs = > input->suspend_all_sdma_gangs; > mes_suspend_gang_pkt.gang_context_addr = input->gang_context_addr; > mes_suspend_gang_pkt.suspend_fence_addr = input->suspend_fence_addr; > mes_suspend_gang_pkt.suspend_fence_value = input->suspend_fence_value; > -- > 2.43.0 >
