diff options
Diffstat (limited to 'meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4811-drm-amdgpu-Add-gfx_off-support-in-smu-through-pp_set.patch')
-rw-r--r-- | meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4811-drm-amdgpu-Add-gfx_off-support-in-smu-through-pp_set.patch | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4811-drm-amdgpu-Add-gfx_off-support-in-smu-through-pp_set.patch b/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4811-drm-amdgpu-Add-gfx_off-support-in-smu-through-pp_set.patch deleted file mode 100644 index 445705d0..00000000 --- a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4811-drm-amdgpu-Add-gfx_off-support-in-smu-through-pp_set.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 3e27fbb641f0383537857d80fa58093b301bb57b Mon Sep 17 00:00:00 2001 -From: Rex Zhu <Rex.Zhu@amd.com> -Date: Tue, 5 Jun 2018 11:46:35 +0800 -Subject: [PATCH 4811/5725] drm/amdgpu: Add gfx_off support in smu through - pp_set_powergating_by_smu - -we can take gfx off feature as gfx power gate. gfx off feature is also -controled by smu. so add gfx_off support in pp_set_powergating_by_smu. - -Reviewed-by: Evan Quan <evan.quan@amd.com> -Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 19 +++++++------------ - drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 4 ++++ - drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 16 ---------------- - 3 files changed, 11 insertions(+), 28 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -index 78d6c99..5a815cf 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -@@ -1780,16 +1780,11 @@ static int amdgpu_device_ip_late_set_cg_state(struct amdgpu_device *adev) - } - } - -- if (adev->powerplay.pp_feature & PP_GFXOFF_MASK) { -+ if (adev->powerplay.pp_feature & PP_GFXOFF_MASK) - /* enable gfx powergating */ - amdgpu_device_ip_set_powergating_state(adev, - AMD_IP_BLOCK_TYPE_GFX, - AMD_PG_STATE_GATE); -- /* enable gfxoff */ -- amdgpu_device_ip_set_powergating_state(adev, -- AMD_IP_BLOCK_TYPE_SMC, -- AMD_PG_STATE_GATE); -- } - - return 0; - } -@@ -1862,6 +1857,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev) - adev->ip_blocks[i].version->funcs->name, r); - return r; - } -+ if (adev->powerplay.pp_funcs->set_powergating_by_smu) -+ amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, false); - r = adev->ip_blocks[i].version->funcs->hw_fini((void *)adev); - /* XXX handle errors */ - if (r) { -@@ -1970,12 +1967,6 @@ int amdgpu_device_ip_suspend(struct amdgpu_device *adev) - if (amdgpu_sriov_vf(adev)) - amdgpu_virt_request_full_gpu(adev, false); - -- /* ungate SMC block powergating */ -- if (adev->powerplay.pp_feature & PP_GFXOFF_MASK) -- amdgpu_device_ip_set_powergating_state(adev, -- AMD_IP_BLOCK_TYPE_SMC, -- AMD_PG_STATE_UNGATE); -- - /* ungate SMC block first */ - r = amdgpu_device_ip_set_clockgating_state(adev, AMD_IP_BLOCK_TYPE_SMC, - AMD_CG_STATE_UNGATE); -@@ -1983,6 +1974,10 @@ int amdgpu_device_ip_suspend(struct amdgpu_device *adev) - DRM_ERROR("set_clockgating_state(ungate) SMC failed %d\n", r); - } - -+ /* call smu to disable gfx off feature first when suspend */ -+ if (adev->powerplay.pp_funcs->set_powergating_by_smu) -+ amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, false); -+ - for (i = adev->num_ip_blocks - 1; i >= 0; i--) { - if (!adev->ip_blocks[i].status.valid) - continue; -diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c -index 7a881ef..cd5668a 100644 ---- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c -+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c -@@ -3730,6 +3730,10 @@ static int gfx_v9_0_set_powergating_state(void *handle, - - /* update mgcg state */ - gfx_v9_0_update_gfx_mg_power_gating(adev, enable); -+ -+ /* set gfx off through smu */ -+ if (enable && adev->powerplay.pp_funcs->set_powergating_by_smu) -+ amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, true); - break; - default: - break; -diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c -index ae190f9..9e54bbe 100644 ---- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c -+++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c -@@ -231,23 +231,7 @@ static int pp_sw_reset(void *handle) - static int pp_set_powergating_state(void *handle, - enum amd_powergating_state state) - { -- struct amdgpu_device *adev = handle; -- struct pp_hwmgr *hwmgr = adev->powerplay.pp_handle; -- int ret; -- -- if (!hwmgr || !hwmgr->pm_en) -- return 0; -- -- if (hwmgr->hwmgr_func->gfx_off_control) { -- /* Enable/disable GFX off through SMU */ -- ret = hwmgr->hwmgr_func->gfx_off_control(hwmgr, -- state == AMD_PG_STATE_GATE); -- if (ret) -- pr_err("gfx off control failed!\n"); -- } -- - return 0; -- - } - - static int pp_suspend(void *handle) --- -2.7.4 - |