[PATCH 4/4] drm/amdgpu: Change the gfx/sdma init/fini sequence

Quan, Evan Evan.Quan at amd.com
Sun Sep 30 04:19:34 UTC 2018


Reviewed-by: Evan Quan <evan.quan at amd.com>

> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Rex
> Zhu
> Sent: 2018年9月30日 0:19
> To: amd-gfx at lists.freedesktop.org
> Cc: Zhu, Rex <Rex.Zhu at amd.com>
> Subject: [PATCH 4/4] drm/amdgpu: Change the gfx/sdma init/fini sequence
> 
> initialize gfx/sdma before dpm features enabled.
> and disable dpm features before gfx/sdma fini.
> 
> Acked-by: Alex Deucher <alexander.deucher at amd.com>
> Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/cik.c   | 17 +++++++++--------
>  drivers/gpu/drm/amd/amdgpu/si.c    | 13 +++++++------
>  drivers/gpu/drm/amd/amdgpu/soc15.c |  8 ++++----
>  drivers/gpu/drm/amd/amdgpu/vi.c    | 24 ++++++++++++------------
>  4 files changed, 32 insertions(+), 30 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/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 fb26039..bf5e6a4 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..07880d3 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, &gfx_v8_1_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); @@ -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)
> --
> 1.9.1
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list