[PATCH v2] drm/amdgpu: Disable DPM in virtualization

Trigger Huang trigger.huang at amd.com
Thu Nov 17 05:59:00 UTC 2016


This patch is used for virtualization support. In virtualization,
only SMU manager is needed, DPM should be disabled. This is a
use case for commit 2f9346b6f984
("drm/amdgpu/powerplay: pp module only enable smu when dpm disabled.")

Change in V2, according to Christian's suggestion,
This patch will not mess with module parameters amdgpu_dpm, but make
that a dependency for when amdgpu_dpm is evaluated.

Signed-off-by: Trigger Huang <trigger.huang at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c | 2 +-
 drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c
index e2f0507..fc592c2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c
@@ -184,7 +184,7 @@ static int amdgpu_pp_hw_init(void *handle)
 		ret = adev->powerplay.ip_funcs->hw_init(
 					adev->powerplay.pp_handle);
 
-	if (amdgpu_dpm != 0)
+	if ((amdgpu_dpm != 0) && !amdgpu_sriov_vf(adev))
 		adev->pm.dpm_enabled = true;
 
 	return ret;
diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
index 4a4f97b..51a3607 100644
--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
+++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
@@ -911,7 +911,8 @@ static int amd_pp_instance_init(struct amd_pp_init *pp_init,
 
 	amd_pp->pp_handle = handle;
 
-	if (amdgpu_dpm == 0)
+	if ((amdgpu_dpm == 0)
+		|| cgs_is_virtualization_enabled(pp_init->device))
 		return 0;
 
 	ret = hwmgr_init(pp_init, handle);
@@ -940,7 +941,8 @@ static int amd_pp_instance_fini(void *handle)
 	if (instance == NULL)
 		return -EINVAL;
 
-	if (amdgpu_dpm != 0) {
+	if ((amdgpu_dpm != 0)
+		&& !cgs_is_virtualization_enabled(instance->smu_mgr->device)) {
 		eventmgr_fini(instance->eventmgr);
 		hwmgr_fini(instance->hwmgr);
 	}
@@ -1004,7 +1006,8 @@ int amd_powerplay_reset(void *handle)
 
 	hw_init_power_state_table(instance->hwmgr);
 
-	if (amdgpu_dpm == 0)
+	if ((amdgpu_dpm == 0)
+		|| cgs_is_virtualization_enabled(instance->smu_mgr->device))
 		return 0;
 
 	if (eventmgr == NULL || eventmgr->pp_eventmgr_init == NULL)
-- 
2.7.4



More information about the amd-gfx mailing list