[AMD Official Use Only - Internal Distribution Only] Hi Alex: Thank you for your comments. 'convert the amdgpu_asic_read_register() callbacks to use KIQ' is a good suggestion. It is something to look at in the future. BR Curry Gong -----Original Message----- From: Alex Deucher <alexdeucher@xxxxxxxxx> Sent: Tuesday, January 14, 2020 10:40 PM To: Gong, Curry <Curry.Gong@xxxxxxx> Cc: amd-gfx list <amd-gfx@xxxxxxxxxxxxxxxxxxxxx> Subject: Re: [PATCH 3/3] drm/amdgpu: reading register using RREG32_KIQ macro (On Tue, Jan 14, 2020 at 6:42 AM chen gong <curry.gong@xxxxxxx> wrote: > > Reading CP_MEM_SLP_CNTL register with RREG32_SOC15 macro will lead to > hang when GPU is in "gfxoff" state. > I do a uniform substitution here. > > Signed-off-by: chen gong <curry.gong@xxxxxxx> Alternatively, we could wrap this function with amdgpu_gfx_off_ctrl() like we do for the AMDGPU_INFO_READ_MMR_REG. Maybe it would be better to convert the amdgpu_asic_read_register() callbacks to use KIQ as well? That can be something to look at in the future. Alex > --- > drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > index 425762a..cdafacc 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > @@ -4714,12 +4714,12 @@ static void gfx_v9_0_get_clockgating_state(void *handle, u32 *flags) > *flags = 0; > > /* AMD_CG_SUPPORT_GFX_MGCG */ > - data = RREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE); > + data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, > + mmRLC_CGTT_MGCG_OVERRIDE)); > if (!(data & RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGCG_OVERRIDE_MASK)) > *flags |= AMD_CG_SUPPORT_GFX_MGCG; > > /* AMD_CG_SUPPORT_GFX_CGCG */ > - data = RREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL); > + data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, > + mmRLC_CGCG_CGLS_CTRL)); > if (data & RLC_CGCG_CGLS_CTRL__CGCG_EN_MASK) > *flags |= AMD_CG_SUPPORT_GFX_CGCG; > > @@ -4728,18 +4728,18 @@ static void gfx_v9_0_get_clockgating_state(void *handle, u32 *flags) > *flags |= AMD_CG_SUPPORT_GFX_CGLS; > > /* AMD_CG_SUPPORT_GFX_RLC_LS */ > - data = RREG32_SOC15(GC, 0, mmRLC_MEM_SLP_CNTL); > + data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, > + mmRLC_MEM_SLP_CNTL)); > if (data & RLC_MEM_SLP_CNTL__RLC_MEM_LS_EN_MASK) > *flags |= AMD_CG_SUPPORT_GFX_RLC_LS | > AMD_CG_SUPPORT_GFX_MGLS; > > /* AMD_CG_SUPPORT_GFX_CP_LS */ > - data = RREG32_SOC15(GC, 0, mmCP_MEM_SLP_CNTL); > + data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, mmCP_MEM_SLP_CNTL)); > if (data & CP_MEM_SLP_CNTL__CP_MEM_LS_EN_MASK) > *flags |= AMD_CG_SUPPORT_GFX_CP_LS | > AMD_CG_SUPPORT_GFX_MGLS; > > if (adev->asic_type != CHIP_ARCTURUS) { > /* AMD_CG_SUPPORT_GFX_3D_CGCG */ > - data = RREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL_3D); > + data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, > + mmRLC_CGCG_CGLS_CTRL_3D)); > if (data & RLC_CGCG_CGLS_CTRL_3D__CGCG_EN_MASK) > *flags |= AMD_CG_SUPPORT_GFX_3D_CGCG; > > -- > 2.7.4 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist > s.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7Ccu > rry.gong%40amd.com%7Ca53ec98e6f2848143fd308d798ff9e89%7C3dd8961fe4884e > 608e11a82d994e183d%7C0%7C0%7C637146095959110200&sdata=zbCMK3WYn%2F > nWZol8IO3cA1EvGefPpD7WzAchoA9A%2B1A%3D&reserved=0 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx