> -----Original Message-----
> From: Vishwakarma, Pratik
> Sent: Friday, September 21, 2018 12:34 PM
> To: Zhu, Rex <rex....@amd.com>; amd-gfx@lists.freedesktop.org; Zhou,
> Hang <hang.z...@amd.com>
> Subject: Re: [PATCH 4/4] drm/amdgpu: Change the gfx/sdma init/fini
> sequence
> 
> On 9/20/2018 3:37 PM, Rex Zhu wrote:
> > initialize gfx/sdma before dpm features enabled.
> > and disable dpm features before gfx/sdma fini.
> >
> > Signed-off-by: Rex Zhu <rex....@amd.com>
> > ---
> >   drivers/gpu/drm/amd/amdgpu/cik.c              | 17 +++++++++--------
> >   drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c         | 11 +++++++++--
> >   drivers/gpu/drm/amd/amdgpu/si.c               | 13 +++++++------
> >   drivers/gpu/drm/amd/amdgpu/soc15.c            |  8 ++++----
> >   drivers/gpu/drm/amd/amdgpu/vi.c               | 24 
> > ++++++++++++------------
> >   drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 16 +++++++++++++-
> --
> >   drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c   | 18 ------------------
> >   7 files changed, 54 insertions(+), 53 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c
> > b/drivers/gpu/drm/amd/amdgpu/cik.c
> > index 78ab939..f41f5f5 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/cik.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/cik.c
> > @@ -2002,6 +2002,8 @@ int cik_set_ip_blocks(struct amdgpu_device
> *adev)
> >             amdgpu_device_ip_block_add(adev,
> &cik_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &cik_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v7_2_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &cik_sdma_ip_block);
> >             if (amdgpu_dpm == -1)
> >                     amdgpu_device_ip_block_add(adev,
> &pp_smu_ip_block);
> >             else
> > @@ -2014,8 +2016,6 @@ int cik_set_ip_blocks(struct amdgpu_device
> *adev)
> >   #endif
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v8_2_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v7_2_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &cik_sdma_ip_block);
> >             amdgpu_device_ip_block_add(adev, &uvd_v4_2_ip_block);
> >             amdgpu_device_ip_block_add(adev, &vce_v2_0_ip_block);
> >             break;
> > @@ -2023,6 +2023,8 @@ int cik_set_ip_blocks(struct amdgpu_device
> *adev)
> >             amdgpu_device_ip_block_add(adev,
> &cik_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &cik_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v7_3_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &cik_sdma_ip_block);
> >             if (amdgpu_dpm == -1)
> >                     amdgpu_device_ip_block_add(adev,
> &pp_smu_ip_block);
> >             else
> > @@ -2035,8 +2037,6 @@ int cik_set_ip_blocks(struct amdgpu_device
> *adev)
> >   #endif
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v8_5_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v7_3_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &cik_sdma_ip_block);
> >             amdgpu_device_ip_block_add(adev, &uvd_v4_2_ip_block);
> >             amdgpu_device_ip_block_add(adev, &vce_v2_0_ip_block);
> >             break;
> > @@ -2044,6 +2044,8 @@ int cik_set_ip_blocks(struct amdgpu_device
> *adev)
> >             amdgpu_device_ip_block_add(adev,
> &cik_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &cik_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v7_1_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &cik_sdma_ip_block);
> >             amdgpu_device_ip_block_add(adev, &kv_smu_ip_block);
> >             if (adev->enable_virtual_display)
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block); @@
> > -2053,8 +2055,7 @@ int cik_set_ip_blocks(struct amdgpu_device *adev)
> >   #endif
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v8_1_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v7_1_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &cik_sdma_ip_block);
> > +
> >             amdgpu_device_ip_block_add(adev, &uvd_v4_2_ip_block);
> >             amdgpu_device_ip_block_add(adev, &vce_v2_0_ip_block);
> >             break;
> > @@ -2063,6 +2064,8 @@ int cik_set_ip_blocks(struct amdgpu_device
> *adev)
> >             amdgpu_device_ip_block_add(adev,
> &cik_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &cik_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v7_2_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &cik_sdma_ip_block);
> >             amdgpu_device_ip_block_add(adev, &kv_smu_ip_block);
> >             if (adev->enable_virtual_display)
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block); @@
> > -2072,8 +2075,6 @@ int cik_set_ip_blocks(struct amdgpu_device *adev)
> >   #endif
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v8_3_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v7_2_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &cik_sdma_ip_block);
> >             amdgpu_device_ip_block_add(adev, &uvd_v4_2_ip_block);
> >             amdgpu_device_ip_block_add(adev, &vce_v2_0_ip_block);
> >             break;
> > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> > b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> > index 3670f76..8690e04 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> > @@ -4217,10 +4217,17 @@ static int gfx_v8_0_rlc_resume(struct
> amdgpu_device *adev)
> >     if (adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT) {
> >             /* legacy rlc firmware loading */
> >             r = gfx_v8_0_rlc_load_microcode(adev);
> > -           if (r)
> > -                   return r;
> > +   } else if (adev->firmware.load_type == AMDGPU_FW_LOAD_SMU &&
> adev->powerplay.pp_funcs->load_firmware) {
> > +           amdgpu_ucode_init_bo(adev);
> > +           r = adev->powerplay.pp_funcs->load_firmware(adev-
> >powerplay.pp_handle);
> > +   } else {
> > +           r = -EINVAL;
> >     }
> >
> Can you please explain above change? It seems unrelated to commit
> message.

On VI, rlc/me/mec/sdma firmware can be loaded via smu, so if fw_load_smu type 
is enabled,
We need to call smu to load firmware first.

Thanks
Rex
> > +   if (r) {
> > +           pr_err("firmware loading failed\n");
> > +           return r;
> > +   }
> >     gfx_v8_0_rlc_start(adev);
> >
> >     return 0;
> > diff --git a/drivers/gpu/drm/amd/amdgpu/si.c
> > b/drivers/gpu/drm/amd/amdgpu/si.c index c364ef9..f8408f8 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/si.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/si.c
> > @@ -2057,13 +2057,13 @@ int si_set_ip_blocks(struct amdgpu_device
> *adev)
> >             amdgpu_device_ip_block_add(adev, &si_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v6_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &si_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v6_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &si_dma_ip_block);
> >             amdgpu_device_ip_block_add(adev, &si_smu_ip_block);
> >             if (adev->enable_virtual_display)
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block);
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v6_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v6_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &si_dma_ip_block);
> >             /* amdgpu_device_ip_block_add(adev, &uvd_v3_1_ip_block);
> */
> >             /* amdgpu_device_ip_block_add(adev, &vce_v1_0_ip_block);
> */
> >             break;
> > @@ -2071,13 +2071,14 @@ int si_set_ip_blocks(struct amdgpu_device
> *adev)
> >             amdgpu_device_ip_block_add(adev, &si_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v6_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &si_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v6_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &si_dma_ip_block);
> >             amdgpu_device_ip_block_add(adev, &si_smu_ip_block);
> >             if (adev->enable_virtual_display)
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block);
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v6_4_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v6_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &si_dma_ip_block);
> > +
> >             /* amdgpu_device_ip_block_add(adev, &uvd_v3_1_ip_block);
> */
> >             /* amdgpu_device_ip_block_add(adev, &vce_v1_0_ip_block);
> */
> >             break;
> > @@ -2085,11 +2086,11 @@ int si_set_ip_blocks(struct amdgpu_device
> *adev)
> >             amdgpu_device_ip_block_add(adev, &si_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v6_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &si_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v6_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &si_dma_ip_block);
> >             amdgpu_device_ip_block_add(adev, &si_smu_ip_block);
> >             if (adev->enable_virtual_display)
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v6_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &si_dma_ip_block);
> >             break;
> >     default:
> >             BUG();
> > diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c
> > b/drivers/gpu/drm/amd/amdgpu/soc15.c
> > index 138c481..a741913 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/soc15.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
> > @@ -529,6 +529,8 @@ int soc15_set_ip_blocks(struct amdgpu_device
> *adev)
> >                     amdgpu_device_ip_block_add(adev,
> &psp_v11_0_ip_block);
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &psp_v3_1_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block);
> >             if (!amdgpu_sriov_vf(adev))
> >                     amdgpu_device_ip_block_add(adev,
> &pp_smu_ip_block);
> >             if (adev->enable_virtual_display || amdgpu_sriov_vf(adev))
> @@
> > -539,8 +541,6 @@ int soc15_set_ip_blocks(struct amdgpu_device *adev)
> >   #else
> >   # warning "Enable CONFIG_DRM_AMD_DC for display support on
> SOC15."
> >   #endif
> > -           amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block);
> >             if (!(adev->asic_type == CHIP_VEGA20 &&
> amdgpu_sriov_vf(adev))) {
> >                     amdgpu_device_ip_block_add(adev,
> &uvd_v7_0_ip_block);
> >                     amdgpu_device_ip_block_add(adev,
> &vce_v4_0_ip_block); @@ -551,6
> > +551,8 @@ int soc15_set_ip_blocks(struct amdgpu_device *adev)
> >             amdgpu_device_ip_block_add(adev, &gmc_v9_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block);
> >             amdgpu_device_ip_block_add(adev, &psp_v10_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &pp_smu_ip_block);
> >             if (adev->enable_virtual_display || amdgpu_sriov_vf(adev))
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block); @@
> > -560,8 +562,6 @@ int soc15_set_ip_blocks(struct amdgpu_device *adev)
> >   #else
> >   # warning "Enable CONFIG_DRM_AMD_DC for display support on
> SOC15."
> >   #endif
> > -           amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &vcn_v1_0_ip_block);
> >             break;
> >     default:
> > diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c
> > b/drivers/gpu/drm/amd/amdgpu/vi.c index 88b57a5..2727119 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/vi.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/vi.c
> > @@ -1596,16 +1596,18 @@ int vi_set_ip_blocks(struct amdgpu_device
> *adev)
> >             amdgpu_device_ip_block_add(adev, &vi_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v7_4_ip_block);
> >             amdgpu_device_ip_block_add(adev, &iceland_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &sdma_v2_4_ip_block);
> >             amdgpu_device_ip_block_add(adev, &pp_smu_ip_block);
> >             if (adev->enable_virtual_display)
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &sdma_v2_4_ip_block);
> >             break;
> >     case CHIP_FIJI:
> >             amdgpu_device_ip_block_add(adev, &vi_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v8_5_ip_block);
> >             amdgpu_device_ip_block_add(adev, &tonga_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &pp_smu_ip_block);
> >             if (adev->enable_virtual_display || amdgpu_sriov_vf(adev))
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block); @@
> > -1615,8 +1617,6 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
> >   #endif
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v10_1_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block);
> >             if (!amdgpu_sriov_vf(adev)) {
> >                     amdgpu_device_ip_block_add(adev,
> &uvd_v6_0_ip_block);
> >                     amdgpu_device_ip_block_add(adev,
> &vce_v3_0_ip_block); @@ -1626,6
> > +1626,8 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
> >             amdgpu_device_ip_block_add(adev, &vi_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v8_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &tonga_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &pp_smu_ip_block);
> >             if (adev->enable_virtual_display || amdgpu_sriov_vf(adev))
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block); @@
> > -1635,8 +1637,6 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
> >   #endif
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v10_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block);
> >             if (!amdgpu_sriov_vf(adev)) {
> >                     amdgpu_device_ip_block_add(adev,
> &uvd_v5_0_ip_block);
> >                     amdgpu_device_ip_block_add(adev,
> &vce_v3_0_ip_block); @@ -1649,6
> > +1649,8 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
> >             amdgpu_device_ip_block_add(adev, &vi_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v8_1_ip_block);
> >             amdgpu_device_ip_block_add(adev, &tonga_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &sdma_v3_1_ip_block);
> >             amdgpu_device_ip_block_add(adev, &pp_smu_ip_block);
> >             if (adev->enable_virtual_display)
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block); @@
> > -1658,8 +1660,6 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
> >   #endif
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v11_2_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &sdma_v3_1_ip_block);
> >             amdgpu_device_ip_block_add(adev, &uvd_v6_3_ip_block);
> >             amdgpu_device_ip_block_add(adev, &vce_v3_4_ip_block);
> >             break;
> > @@ -1667,6 +1667,8 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
> >             amdgpu_device_ip_block_add(adev, &vi_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v8_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &cz_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &pp_smu_ip_block);
> >             if (adev->enable_virtual_display)
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block); @@
> > -1676,8 +1678,6 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
> >   #endif
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v11_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &uvd_v6_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &vce_v3_1_ip_block);
> >   #if defined(CONFIG_DRM_AMD_ACP)
> > @@ -1688,6 +1688,8 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
> >             amdgpu_device_ip_block_add(adev, &vi_common_ip_block);
> >             amdgpu_device_ip_block_add(adev, &gmc_v8_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &cz_ih_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block);
> > +           amdgpu_device_ip_block_add(adev, &gfx_v8_1_ip_block);
> >             amdgpu_device_ip_block_add(adev, &pp_smu_ip_block);
> >             if (adev->enable_virtual_display)
> >                     amdgpu_device_ip_block_add(adev,
> &dce_virtual_ip_block); @@
> > -1697,8 +1699,6 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
> >   #endif
> >             else
> >                     amdgpu_device_ip_block_add(adev,
> &dce_v11_0_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &gfx_v8_1_ip_block);
> > -           amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block);
> >             amdgpu_device_ip_block_add(adev, &uvd_v6_2_ip_block);
> >             amdgpu_device_ip_block_add(adev, &vce_v3_4_ip_block);
> >   #if defined(CONFIG_DRM_AMD_ACP)
> > diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> > b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> > index da4ebff..f486d50 100644
> > --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> > +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> > @@ -124,9 +124,6 @@ static int pp_hw_init(void *handle)
> >     struct amdgpu_device *adev = handle;
> >     struct pp_hwmgr *hwmgr = adev->powerplay.pp_handle;
> >
> > -   if (adev->firmware.load_type == AMDGPU_FW_LOAD_SMU)
> > -           amdgpu_ucode_init_bo(adev);
> > -
> >     ret = hwmgr_hw_init(hwmgr);
> >
> >     if (ret)
> > @@ -275,6 +272,19 @@ static int pp_set_clockgating_state(void *handle,
> >
> >   static int pp_dpm_load_fw(void *handle)
> >   {
> > +   struct pp_hwmgr *hwmgr = handle;
> > +   int ret = 0;
> > +
> > +   if (!hwmgr || !hwmgr->smumgr_funcs)
> > +           return -EINVAL;
> > +
> > +   if (hwmgr->smumgr_funcs->start_smu) {
> > +           ret = hwmgr->smumgr_funcs->start_smu(hwmgr);
> > +           if (ret) {
> > +                   pr_err("smc start failed\n");
> > +                   return ret;
> > +           }
> > +   }
> >     return 0;
> >   }
> >
> > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
> > b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
> > index 7500a3e..deb0e47 100644
> > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
> > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
> > @@ -209,17 +209,6 @@ int hwmgr_hw_init(struct pp_hwmgr *hwmgr)
> >   {
> >     int ret = 0;
> >
> > -   if (!hwmgr || !hwmgr->smumgr_funcs)
> > -           return -EINVAL;
> > -
> > -   if (hwmgr->smumgr_funcs->start_smu) {
> > -           ret = hwmgr->smumgr_funcs->start_smu(hwmgr);
> > -           if (ret) {
> > -                   pr_err("smc start failed\n");
> > -                   return -EINVAL;
> > -           }
> > -   }
> > -
> >     if (!hwmgr->pm_en)
> >             return 0;
> >
> > @@ -320,13 +309,6 @@ int hwmgr_resume(struct pp_hwmgr *hwmgr)
> >     if (!hwmgr)
> >             return -EINVAL;
> >
> > -   if (hwmgr->smumgr_funcs && hwmgr->smumgr_funcs->start_smu) {
> > -           if (hwmgr->smumgr_funcs->start_smu(hwmgr)) {
> > -                   pr_err("smc start failed\n");
> > -                   return -EINVAL;
> > -           }
> > -   }
> > -
> >     if (!hwmgr->pm_en)
> >             return 0;
> >

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to