i = state == AMD_CG_STATE_GATE ? j : adev->num_ip_blocks - j - 1;
                if (!adev->ip_blocks[i].status.late_initialized)
                        continue;
-               /* skip CG for GFX on S0ix */
+               /* skip CG for GFX, SDMA on S0ix */
                if (adev->in_s0ix &&
-                   adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX)
+                   (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX ||
+                    adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_SDMA))
                        continue;
                /* skip CG for VCE/UVD, it's handled specially */
                if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD &&
                i = state == AMD_PG_STATE_GATE ? j : adev->num_ip_blocks - j - 1;
                if (!adev->ip_blocks[i].status.late_initialized)
                        continue;
-               /* skip PG for GFX on S0ix */
+               /* skip PG for GFX, SDMA on S0ix */
                if (adev->in_s0ix &&
-                   adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX)
+                   (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX ||
+                    adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_SDMA))
                        continue;
                /* skip CG for VCE/UVD, it's handled specially */
                if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD &&