summarylogtreecommitdiffstats
path: root/0004-drm-amd-pm-avoid-duplicate-powergate-ungate-setting.patch
diff options
context:
space:
mode:
Diffstat (limited to '0004-drm-amd-pm-avoid-duplicate-powergate-ungate-setting.patch')
-rw-r--r--0004-drm-amd-pm-avoid-duplicate-powergate-ungate-setting.patch108
1 files changed, 0 insertions, 108 deletions
diff --git a/0004-drm-amd-pm-avoid-duplicate-powergate-ungate-setting.patch b/0004-drm-amd-pm-avoid-duplicate-powergate-ungate-setting.patch
deleted file mode 100644
index b8f319c67ce9..000000000000
--- a/0004-drm-amd-pm-avoid-duplicate-powergate-ungate-setting.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 4e023bf774e59df151f0b056179ab46f5d60423e Mon Sep 17 00:00:00 2001
-From: Evan Quan <evan.quan@amd.com>
-Date: Mon, 15 Nov 2021 10:51:37 +0800
-Subject: [PATCH 4/8] drm/amd/pm: avoid duplicate powergate/ungate setting
-
-Just bail out if the target IP block is already in the desired
-powergate/ungate state. This can avoid some duplicate settings
-which sometimes may cause unexpected issues.
-
-Link: https://lore.kernel.org/all/YV81vidWQLWvATMM@zn.tnic/
-
-Change-Id: I66346c69f121df0f5ee20182451313ae4fda2d04
-Signed-off-by: Evan Quan <evan.quan@amd.com>
-Tested-by: Borislav Petkov <bp@suse.de>
-Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
-For: https://bugs.archlinux.org/task/72753
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++
- drivers/gpu/drm/amd/include/amd_shared.h | 3 ++-
- drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 10 ++++++++++
- drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h | 8 ++++++++
- 4 files changed, 23 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-index c1e34aa5925b..96ca42bcfdbf 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-@@ -3532,6 +3532,9 @@ int amdgpu_device_init(struct amdgpu_device *adev,
- adev->rmmio_size = pci_resource_len(adev->pdev, 2);
- }
-
-+ for (i = 0; i < AMD_IP_BLOCK_TYPE_NUM; i++)
-+ atomic_set(&adev->pm.pwr_state[i], POWER_STATE_UNKNOWN);
-+
- adev->rmmio = ioremap(adev->rmmio_base, adev->rmmio_size);
- if (adev->rmmio == NULL) {
- return -ENOMEM;
-diff --git a/drivers/gpu/drm/amd/include/amd_shared.h b/drivers/gpu/drm/amd/include/amd_shared.h
-index 257f280d3d53..bd077ea224a4 100644
---- a/drivers/gpu/drm/amd/include/amd_shared.h
-+++ b/drivers/gpu/drm/amd/include/amd_shared.h
-@@ -98,7 +98,8 @@ enum amd_ip_block_type {
- AMD_IP_BLOCK_TYPE_ACP,
- AMD_IP_BLOCK_TYPE_VCN,
- AMD_IP_BLOCK_TYPE_MES,
-- AMD_IP_BLOCK_TYPE_JPEG
-+ AMD_IP_BLOCK_TYPE_JPEG,
-+ AMD_IP_BLOCK_TYPE_NUM,
- };
-
- enum amd_clockgating_state {
-diff --git a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c
-index 03581d5b1836..08362d506534 100644
---- a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c
-+++ b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c
-@@ -927,6 +927,13 @@ int amdgpu_dpm_set_powergating_by_smu(struct amdgpu_device *adev, uint32_t block
- {
- int ret = 0;
- const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
-+ enum ip_power_state pwr_state = gate ? POWER_STATE_OFF : POWER_STATE_ON;
-+
-+ if (atomic_read(&adev->pm.pwr_state[block_type]) == pwr_state) {
-+ dev_dbg(adev->dev, "IP block%d already in the target %s state!",
-+ block_type, gate ? "gate" : "ungate");
-+ return 0;
-+ }
-
- switch (block_type) {
- case AMD_IP_BLOCK_TYPE_UVD:
-@@ -979,6 +986,9 @@ int amdgpu_dpm_set_powergating_by_smu(struct amdgpu_device *adev, uint32_t block
- break;
- }
-
-+ if (!ret)
-+ atomic_set(&adev->pm.pwr_state[block_type], pwr_state);
-+
- return ret;
- }
-
-diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
-index 98f1b3d8c1d5..16e3f72d31b9 100644
---- a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
-+++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
-@@ -417,6 +417,12 @@ struct amdgpu_dpm {
- enum amd_dpm_forced_level forced_level;
- };
-
-+enum ip_power_state {
-+ POWER_STATE_UNKNOWN,
-+ POWER_STATE_ON,
-+ POWER_STATE_OFF,
-+};
-+
- struct amdgpu_pm {
- struct mutex mutex;
- u32 current_sclk;
-@@ -452,6 +458,8 @@ struct amdgpu_pm {
- struct i2c_adapter smu_i2c;
- struct mutex smu_i2c_mutex;
- struct list_head pm_attr_list;
-+
-+ atomic_t pwr_state[AMD_IP_BLOCK_TYPE_NUM];
- };
-
- #define R600_SSTU_DFLT 0
---
-2.34.0
-