* [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0
@ 2022-06-06 3:11 Evan Quan
2022-06-06 3:11 ` [PATCH V2 2/6] drm/amdgpu: avoid to perform undesired clockgating operation Evan Quan
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Evan Quan @ 2022-06-06 3:11 UTC (permalink / raw)
To: amd-gfx
Cc: Alexander.Deucher, Likun.Gao, Lijo.Lazar, Evan Quan, Hawking.Zhang
Enable ASPM support for PCIE 7.4.0 and 7.6.0.
Signed-off-by: Evan Quan <evan.quan@amd.com>
Change-Id: Ib3b0e106ff43ad49f0f815e6eeb5c756b6bf4550
---
drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 +
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 1 +
drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c | 109 ++++++++++++++++++
drivers/gpu/drm/amd/amdgpu/soc21.c | 7 +-
.../include/asic_reg/nbio/nbio_4_3_0_offset.h | 2 +
.../asic_reg/nbio/nbio_4_3_0_sh_mask.h | 1 +
6 files changed, 118 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index dc938d4d8616..3eabca826c75 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -689,6 +689,7 @@ enum amd_hw_ip_block_type {
RSMU_HWIP,
XGMI_HWIP,
DCI_HWIP,
+ PCIE_HWIP,
MAX_HWIP
};
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
index 3996da88e1fa..44cea9649810 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
@@ -193,6 +193,7 @@ static int hw_id_map[MAX_HWIP] = {
[UMC_HWIP] = UMC_HWID,
[XGMI_HWIP] = XGMI_HWID,
[DCI_HWIP] = DCI_HWID,
+ [PCIE_HWIP] = PCIE_HWID,
};
static int amdgpu_discovery_read_binary_from_vram(struct amdgpu_device *adev, uint8_t *binary)
diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c b/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c
index ed31d133f07a..add093b9aa79 100644
--- a/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c
+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c
@@ -344,6 +344,114 @@ static u32 nbio_v4_3_get_rom_offset(struct amdgpu_device *adev)
return rom_offset;
}
+static void nbio_v4_3_program_ltr(struct amdgpu_device *adev)
+{
+ uint32_t def, data;
+
+ def = RREG32_SOC15(NBIO, 0, regRCC_EP_DEV0_0_EP_PCIE_TX_LTR_CNTL);
+ data = 0x35EB;
+ data &= ~EP_PCIE_TX_LTR_CNTL__LTR_PRIV_MSG_DIS_IN_PM_NON_D0_MASK;
+ data &= ~EP_PCIE_TX_LTR_CNTL__LTR_PRIV_RST_LTR_IN_DL_DOWN_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regRCC_EP_DEV0_0_EP_PCIE_TX_LTR_CNTL, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP2);
+ data &= ~RCC_BIF_STRAP2__STRAP_LTR_IN_ASPML1_DIS_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP2, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_DEVICE_CNTL2);
+ data |= BIF_CFG_DEV0_EPF0_DEVICE_CNTL2__LTR_EN_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data);
+}
+
+static void nbio_v4_3_program_aspm(struct amdgpu_device *adev)
+{
+ uint32_t def, data;
+
+ if (!(adev->ip_versions[PCIE_HWIP][0] == IP_VERSION(7, 4, 0)) &&
+ !(adev->ip_versions[PCIE_HWIP][0] == IP_VERSION(7, 6, 0)))
+ return;
+
+ def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL);
+ data &= ~PCIE_LC_CNTL__LC_L1_INACTIVITY_MASK;
+ data &= ~PCIE_LC_CNTL__LC_L0S_INACTIVITY_MASK;
+ data |= PCIE_LC_CNTL__LC_PMI_TO_L1_DIS_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL7);
+ data |= PCIE_LC_CNTL7__LC_NBIF_ASPM_INPUT_EN_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL7, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL3);
+ data |= PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL3, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP3);
+ data &= ~RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER_MASK;
+ data &= ~RCC_BIF_STRAP3__STRAP_VLINK_PM_L1_ENTRY_TIMER_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP3, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP5);
+ data &= ~RCC_BIF_STRAP5__STRAP_VLINK_LDN_ENTRY_TIMER_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP5, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_DEVICE_CNTL2);
+ data &= ~BIF_CFG_DEV0_EPF0_DEVICE_CNTL2__LTR_EN_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data);
+
+ WREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_PCIE_LTR_CAP, 0x10011001);
+
+ def = data = RREG32_SOC15(NBIO, 0, regPSWUSP0_PCIE_LC_CNTL2);
+ data |= PSWUSP0_PCIE_LC_CNTL2__LC_ALLOW_PDWN_IN_L1_MASK |
+ PSWUSP0_PCIE_LC_CNTL2__LC_ALLOW_PDWN_IN_L23_MASK;
+ data &= ~PSWUSP0_PCIE_LC_CNTL2__LC_RCV_L0_TO_RCV_L0S_DIS_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regPSWUSP0_PCIE_LC_CNTL2, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL4);
+ data |= PCIE_LC_CNTL4__LC_L1_POWERDOWN_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL4, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_RXRECOVER_RXSTANDBY_CNTL);
+ data |= PCIE_LC_RXRECOVER_RXSTANDBY_CNTL__LC_RX_L0S_STANDBY_EN_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regPCIE_LC_RXRECOVER_RXSTANDBY_CNTL, data);
+
+ nbio_v4_3_program_ltr(adev);
+
+ def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP3);
+ data |= 0x5DE0 << RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER__SHIFT;
+ data |= 0x0010 << RCC_BIF_STRAP3__STRAP_VLINK_PM_L1_ENTRY_TIMER__SHIFT;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP3, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP5);
+ data |= 0x0010 << RCC_BIF_STRAP5__STRAP_VLINK_LDN_ENTRY_TIMER__SHIFT;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP5, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL);
+ data |= 0x0 << PCIE_LC_CNTL__LC_L0S_INACTIVITY__SHIFT;
+ data |= 0x9 << PCIE_LC_CNTL__LC_L1_INACTIVITY__SHIFT;
+ data &= ~PCIE_LC_CNTL__LC_PMI_TO_L1_DIS_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL, data);
+
+ def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL3);
+ data &= ~PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK;
+ if (def != data)
+ WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL3, data);
+}
+
const struct amdgpu_nbio_funcs nbio_v4_3_funcs = {
.get_hdp_flush_req_offset = nbio_v4_3_get_hdp_flush_req_offset,
.get_hdp_flush_done_offset = nbio_v4_3_get_hdp_flush_done_offset,
@@ -365,4 +473,5 @@ const struct amdgpu_nbio_funcs nbio_v4_3_funcs = {
.init_registers = nbio_v4_3_init_registers,
.remap_hdp_registers = nbio_v4_3_remap_hdp_registers,
.get_rom_offset = nbio_v4_3_get_rom_offset,
+ .program_aspm = nbio_v4_3_program_aspm,
};
diff --git a/drivers/gpu/drm/amd/amdgpu/soc21.c b/drivers/gpu/drm/amd/amdgpu/soc21.c
index 31caae7c2495..d8a954bd4c50 100644
--- a/drivers/gpu/drm/amd/amdgpu/soc21.c
+++ b/drivers/gpu/drm/amd/amdgpu/soc21.c
@@ -380,11 +380,12 @@ static void soc21_pcie_gen3_enable(struct amdgpu_device *adev)
static void soc21_program_aspm(struct amdgpu_device *adev)
{
-
- if (amdgpu_aspm == 0)
+ if (!amdgpu_device_should_use_aspm(adev))
return;
- /* todo */
+ if (!(adev->flags & AMD_IS_APU) &&
+ (adev->nbio.funcs->program_aspm))
+ adev->nbio.funcs->program_aspm(adev);
}
static void soc21_enable_doorbell_aperture(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_offset.h
index 53802d674e13..4b489d64deaa 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_offset.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_offset.h
@@ -6918,6 +6918,8 @@
#define regPSWUSCFG0_SSID_CAP 0x2880031
#define regPSWUSCFG0_SSID_CAP_BASE_IDX 5
+#define regPCIE_LC_RXRECOVER_RXSTANDBY_CNTL 0x2890102
+#define regPCIE_LC_RXRECOVER_RXSTANDBY_CNTL_BASE_IDX 5
// addressBlock: nbio_nbif0_bif_cfg_dev0_rc_bifcfgdecp
// base address: 0x10100000
diff --git a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_sh_mask.h
index f3cda48bfaeb..d038fd915351 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_sh_mask.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_sh_mask.h
@@ -82045,5 +82045,6 @@
#define BIF_CFG_DEV0_EPF3_1_RTR_DATA2__FLR_TIME_MASK 0x00000FFFL
#define BIF_CFG_DEV0_EPF3_1_RTR_DATA2__D3HOTD0_TIME_MASK 0x00FFF000L
+#define PCIE_LC_RXRECOVER_RXSTANDBY_CNTL__LC_RX_L0S_STANDBY_EN_MASK 0x00010000L
#endif
--
2.29.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH V2 2/6] drm/amdgpu: avoid to perform undesired clockgating operation
2022-06-06 3:11 [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Evan Quan
@ 2022-06-06 3:11 ` Evan Quan
2022-06-06 3:11 ` [PATCH V2 3/6] drm/amd/pm: enable mode1 reset support for SMU 13.0.0 Evan Quan
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Evan Quan @ 2022-06-06 3:11 UTC (permalink / raw)
To: amd-gfx
Cc: Alexander.Deucher, Likun.Gao, Lijo.Lazar, Evan Quan, Hawking.Zhang
Make sure the clockgating feature is supported before action.
Otherwise, the feature may be disabled unexpectedly on enablement
request.
Signed-off-by: Evan Quan <evan.quan@amd.com>
Change-Id: Ie20e6c5975c2a0af40dc52189e3df97161300117
---
drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c b/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c
index add093b9aa79..35894ee92dd8 100644
--- a/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c
+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c
@@ -240,8 +240,11 @@ static void nbio_v4_3_update_medium_grain_clock_gating(struct amdgpu_device *ade
{
uint32_t def, data;
+ if (enable && !(adev->cg_flags & AMD_CG_SUPPORT_BIF_MGCG))
+ return;
+
def = data = RREG32_SOC15(NBIO, 0, regCPM_CONTROL);
- if (enable && (adev->cg_flags & AMD_CG_SUPPORT_BIF_MGCG)) {
+ if (enable) {
data |= (CPM_CONTROL__LCLK_DYN_GATE_ENABLE_MASK |
CPM_CONTROL__TXCLK_DYN_GATE_ENABLE_MASK |
CPM_CONTROL__TXCLK_LCNT_GATE_ENABLE_MASK |
@@ -266,9 +269,12 @@ static void nbio_v4_3_update_medium_grain_light_sleep(struct amdgpu_device *adev
{
uint32_t def, data;
+ if (enable && !(adev->cg_flags & AMD_CG_SUPPORT_BIF_LS))
+ return;
+
/* TODO: need update in future */
def = data = RREG32_SOC15(NBIO, 0, regPCIE_CNTL2);
- if (enable && (adev->cg_flags & AMD_CG_SUPPORT_BIF_LS)) {
+ if (enable) {
data |= PCIE_CNTL2__SLV_MEM_LS_EN_MASK;
} else {
data &= ~PCIE_CNTL2__SLV_MEM_LS_EN_MASK;
--
2.29.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH V2 3/6] drm/amd/pm: enable mode1 reset support for SMU 13.0.0
2022-06-06 3:11 [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Evan Quan
2022-06-06 3:11 ` [PATCH V2 2/6] drm/amdgpu: avoid to perform undesired clockgating operation Evan Quan
@ 2022-06-06 3:11 ` Evan Quan
2022-06-06 3:11 ` [PATCH V2 4/6] drm/amd/pm: drop redundant declarations Evan Quan
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Evan Quan @ 2022-06-06 3:11 UTC (permalink / raw)
To: amd-gfx
Cc: Alexander.Deucher, Likun.Gao, Lijo.Lazar, Evan Quan, Hawking.Zhang
Fulfill the interfaces for mode1 reset related.
Signed-off-by: Evan Quan <evan.quan@amd.com>
Change-Id: I03bb1f7f3b88bf304a188bb6939c043805df8f10
--
v1->v2:
- drop invalid psp alive check(Lijo)
---
drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h | 1 +
.../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 11 ++++++++++
.../drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 20 +++++++++++++++++++
3 files changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h
index fa544c551b0e..37f1752c7eb1 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h
+++ b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h
@@ -294,5 +294,6 @@ int smu_v13_0_baco_enter(struct smu_context *smu);
int smu_v13_0_baco_exit(struct smu_context *smu);
+int smu_v13_0_mode1_reset(struct smu_context *smu);
#endif
#endif
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
index 367ebc8c8dde..cd183c60742d 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
@@ -2326,3 +2326,14 @@ int smu_v13_0_baco_exit(struct smu_context *smu)
return smu_v13_0_baco_set_state(smu,
SMU_BACO_STATE_EXIT);
}
+
+int smu_v13_0_mode1_reset(struct smu_context *smu)
+{
+ int ret = 0;
+
+ ret = smu_cmn_send_smc_msg(smu, SMU_MSG_Mode1Reset, NULL);
+ if (!ret)
+ msleep(SMU13_MODE1_RESET_WAIT_TIME_IN_MS);
+
+ return ret;
+}
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
index 99cc49ae6beb..cb17fa928790 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
@@ -117,6 +117,7 @@ static struct cmn2asic_msg_mapping smu_v13_0_0_message_map[SMU_MSG_MAX_COUNT] =
MSG_MAP(SetMGpuFanBoostLimitRpm, PPSMC_MSG_SetMGpuFanBoostLimitRpm, 0),
MSG_MAP(GetPptLimit, PPSMC_MSG_GetPptLimit, 0),
MSG_MAP(NotifyPowerSource, PPSMC_MSG_NotifyPowerSource, 0),
+ MSG_MAP(Mode1Reset, PPSMC_MSG_Mode1Reset, 0),
};
static struct cmn2asic_mapping smu_v13_0_0_clk_map[SMU_CLK_COUNT] = {
@@ -1586,6 +1587,23 @@ static int smu_v13_0_0_set_power_profile_mode(struct smu_context *smu,
NULL);
}
+static bool smu_v13_0_0_is_mode1_reset_supported(struct smu_context *smu)
+{
+ struct amdgpu_device *adev = smu->adev;
+ u32 smu_version;
+
+ /* SRIOV does not support SMU mode1 reset */
+ if (amdgpu_sriov_vf(adev))
+ return false;
+
+ /* PMFW support is available since 78.41 */
+ smu_cmn_get_smc_version(smu, NULL, &smu_version);
+ if (smu_version < 0x004e2900)
+ return false;
+
+ return true;
+}
+
static const struct pptable_funcs smu_v13_0_0_ppt_funcs = {
.get_allowed_feature_mask = smu_v13_0_0_get_allowed_feature_mask,
.set_default_dpm_table = smu_v13_0_0_set_default_dpm_table,
@@ -1648,6 +1666,8 @@ static const struct pptable_funcs smu_v13_0_0_ppt_funcs = {
.baco_set_state = smu_v13_0_baco_set_state,
.baco_enter = smu_v13_0_baco_enter,
.baco_exit = smu_v13_0_baco_exit,
+ .mode1_reset_is_support = smu_v13_0_0_is_mode1_reset_supported,
+ .mode1_reset = smu_v13_0_mode1_reset,
};
void smu_v13_0_0_set_ppt_funcs(struct smu_context *smu)
--
2.29.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH V2 4/6] drm/amd/pm: drop redundant declarations
2022-06-06 3:11 [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Evan Quan
2022-06-06 3:11 ` [PATCH V2 2/6] drm/amdgpu: avoid to perform undesired clockgating operation Evan Quan
2022-06-06 3:11 ` [PATCH V2 3/6] drm/amd/pm: enable mode1 reset support for SMU 13.0.0 Evan Quan
@ 2022-06-06 3:11 ` Evan Quan
2022-06-06 3:11 ` [PATCH V2 5/6] drm/amd/pm: fix compile warnings about redefined MAX_PCIE_CONF Evan Quan
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Evan Quan @ 2022-06-06 3:11 UTC (permalink / raw)
To: amd-gfx
Cc: Alexander.Deucher, Likun.Gao, Lijo.Lazar, Evan Quan, Hawking.Zhang
Drop those redundant declarations in smu_v13_0.h.
Signed-off-by: Evan Quan <evan.quan@amd.com>
Change-Id: I54e43d072235f006b937878c126bcd8ef81ea6f7
---
drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h | 14 --------------
1 file changed, 14 deletions(-)
diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h
index 37f1752c7eb1..62dc526be146 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h
+++ b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h
@@ -280,20 +280,6 @@ int smu_v13_0_run_btc(struct smu_context *smu);
int smu_v13_0_deep_sleep_control(struct smu_context *smu,
bool enablement);
-int smu_v13_0_gfx_ulv_control(struct smu_context *smu,
- bool enablement);
-
-bool smu_v13_0_baco_is_support(struct smu_context *smu);
-
-enum smu_baco_state smu_v13_0_baco_get_state(struct smu_context *smu);
-
-int smu_v13_0_baco_set_state(struct smu_context *smu,
- enum smu_baco_state state);
-
-int smu_v13_0_baco_enter(struct smu_context *smu);
-
-int smu_v13_0_baco_exit(struct smu_context *smu);
-
int smu_v13_0_mode1_reset(struct smu_context *smu);
#endif
#endif
--
2.29.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH V2 5/6] drm/amd/pm: fix compile warnings about redefined MAX_PCIE_CONF
2022-06-06 3:11 [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Evan Quan
` (2 preceding siblings ...)
2022-06-06 3:11 ` [PATCH V2 4/6] drm/amd/pm: drop redundant declarations Evan Quan
@ 2022-06-06 3:11 ` Evan Quan
2022-06-06 3:11 ` [PATCH V2 6/6] drm/amd/pm: drop unneeded dpm features disablement for SMU 13.0.0/7 Evan Quan
2022-06-06 12:57 ` [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Lazar, Lijo
5 siblings, 0 replies; 8+ messages in thread
From: Evan Quan @ 2022-06-06 3:11 UTC (permalink / raw)
To: amd-gfx
Cc: Alexander.Deucher, Likun.Gao, Lijo.Lazar, Evan Quan, Hawking.Zhang
Suppress the compile warnings below:
In file included from drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/aldebaran_ppt.c:37:
drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/aldebaran_ppt.h:31: warning: "MAX_PCIE_CONF" redefined
31 | #define MAX_PCIE_CONF 2
|
In file included from drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/aldebaran_ppt.c:33:
drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h:55: note: this is the location of the previous definition
55 | #define MAX_PCIE_CONF 3
Signed-off-by: Evan Quan <evan.quan@amd.com>
Change-Id: Iacc4ff4007b74d5db54c1e66cb237e55b70975b0
---
drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.h b/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.h
index 33a85d57cf15..31e991bde3e5 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.h
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.h
@@ -28,7 +28,7 @@
#define ALDEBARAN_UMD_PSTATE_MCLK_LEVEL 0x2
#define MAX_DPM_NUMBER 16
-#define MAX_PCIE_CONF 2
+#define ALDEBARAN_MAX_PCIE_CONF 2
struct aldebaran_dpm_level {
bool enabled;
@@ -51,9 +51,9 @@ struct aldebaran_single_dpm_table {
struct aldebaran_pcie_table {
uint16_t count;
- uint8_t pcie_gen[MAX_PCIE_CONF];
- uint8_t pcie_lane[MAX_PCIE_CONF];
- uint32_t lclk[MAX_PCIE_CONF];
+ uint8_t pcie_gen[ALDEBARAN_MAX_PCIE_CONF];
+ uint8_t pcie_lane[ALDEBARAN_MAX_PCIE_CONF];
+ uint32_t lclk[ALDEBARAN_MAX_PCIE_CONF];
};
struct aldebaran_dpm_table {
--
2.29.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH V2 6/6] drm/amd/pm: drop unneeded dpm features disablement for SMU 13.0.0/7
2022-06-06 3:11 [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Evan Quan
` (3 preceding siblings ...)
2022-06-06 3:11 ` [PATCH V2 5/6] drm/amd/pm: fix compile warnings about redefined MAX_PCIE_CONF Evan Quan
@ 2022-06-06 3:11 ` Evan Quan
2022-06-06 15:27 ` Alex Deucher
2022-06-06 12:57 ` [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Lazar, Lijo
5 siblings, 1 reply; 8+ messages in thread
From: Evan Quan @ 2022-06-06 3:11 UTC (permalink / raw)
To: amd-gfx
Cc: Alexander.Deucher, Likun.Gao, Lijo.Lazar, Evan Quan, Hawking.Zhang
PMFW will handle that properly. Driver involvement may cause some
unexpected issues.
Signed-off-by: Evan Quan <evan.quan@amd.com>
Change-Id: I77da7d894485a3ac6a1a956e4d2605d0bc730c25
---
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
index a2db68847477..fd269b8510a5 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
@@ -1402,6 +1402,18 @@ static int smu_disable_dpms(struct smu_context *smu)
(amdgpu_asic_reset_method(adev) == AMD_RESET_METHOD_BACO)) ||
((adev->in_runpm || adev->in_s4) && amdgpu_asic_supports_baco(adev)));
+ /*
+ * For SMU 13.0.0 and 13.0.7, PMFW will handle the DPM features(disablement or others)
+ * properly on suspend/reset/unload. Driver involvement may cause some unexpected issues.
+ */
+ switch (adev->ip_versions[MP1_HWIP][0]) {
+ case IP_VERSION(13, 0, 0):
+ case IP_VERSION(13, 0, 7):
+ return 0;
+ default:
+ break;
+ }
+
/*
* For custom pptable uploading, skip the DPM features
* disable process on Navi1x ASICs.
@@ -1439,7 +1451,6 @@ static int smu_disable_dpms(struct smu_context *smu)
case IP_VERSION(11, 0, 0):
case IP_VERSION(11, 0, 5):
case IP_VERSION(11, 0, 9):
- case IP_VERSION(13, 0, 0):
return 0;
default:
break;
--
2.29.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0
2022-06-06 3:11 [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Evan Quan
` (4 preceding siblings ...)
2022-06-06 3:11 ` [PATCH V2 6/6] drm/amd/pm: drop unneeded dpm features disablement for SMU 13.0.0/7 Evan Quan
@ 2022-06-06 12:57 ` Lazar, Lijo
5 siblings, 0 replies; 8+ messages in thread
From: Lazar, Lijo @ 2022-06-06 12:57 UTC (permalink / raw)
To: Evan Quan, amd-gfx; +Cc: Alexander.Deucher, Likun.Gao, Hawking.Zhang
On 6/6/2022 8:41 AM, Evan Quan wrote:
> Enable ASPM support for PCIE 7.4.0 and 7.6.0.
>
> Signed-off-by: Evan Quan <evan.quan@amd.com>
> Change-Id: Ib3b0e106ff43ad49f0f815e6eeb5c756b6bf4550
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 +
> drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 1 +
> drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c | 109 ++++++++++++++++++
> drivers/gpu/drm/amd/amdgpu/soc21.c | 7 +-
> .../include/asic_reg/nbio/nbio_4_3_0_offset.h | 2 +
> .../asic_reg/nbio/nbio_4_3_0_sh_mask.h | 1 +
> 6 files changed, 118 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index dc938d4d8616..3eabca826c75 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -689,6 +689,7 @@ enum amd_hw_ip_block_type {
> RSMU_HWIP,
> XGMI_HWIP,
> DCI_HWIP,
> + PCIE_HWIP,
> MAX_HWIP
> };
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> index 3996da88e1fa..44cea9649810 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> @@ -193,6 +193,7 @@ static int hw_id_map[MAX_HWIP] = {
> [UMC_HWIP] = UMC_HWID,
> [XGMI_HWIP] = XGMI_HWID,
> [DCI_HWIP] = DCI_HWID,
> + [PCIE_HWIP] = PCIE_HWID,
> };
>
> static int amdgpu_discovery_read_binary_from_vram(struct amdgpu_device *adev, uint8_t *binary)
> diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c b/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c
> index ed31d133f07a..add093b9aa79 100644
> --- a/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c
> +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c
> @@ -344,6 +344,114 @@ static u32 nbio_v4_3_get_rom_offset(struct amdgpu_device *adev)
> return rom_offset;
> }
>
> +static void nbio_v4_3_program_ltr(struct amdgpu_device *adev)
> +{
> + uint32_t def, data;
> +
> + def = RREG32_SOC15(NBIO, 0, regRCC_EP_DEV0_0_EP_PCIE_TX_LTR_CNTL);
> + data = 0x35EB;
> + data &= ~EP_PCIE_TX_LTR_CNTL__LTR_PRIV_MSG_DIS_IN_PM_NON_D0_MASK;
> + data &= ~EP_PCIE_TX_LTR_CNTL__LTR_PRIV_RST_LTR_IN_DL_DOWN_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regRCC_EP_DEV0_0_EP_PCIE_TX_LTR_CNTL, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP2);
> + data &= ~RCC_BIF_STRAP2__STRAP_LTR_IN_ASPML1_DIS_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP2, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_DEVICE_CNTL2);
> + data |= BIF_CFG_DEV0_EPF0_DEVICE_CNTL2__LTR_EN_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data);
> +}
I think we should skip this private way of enabling LTR if is not
enabled by Linux in device control2.
This comment is there in pci driver probe.c
/*
* Software must not enable LTR in an Endpoint unless the Root
* Complex and all intermediate Switches indicate support for LTR.
* PCIe r4.0, sec 6.18.
*/
Use something similar to detect if LTR is enabled -
pcie_capability_read_word(trans_pcie->pci_dev, PCI_EXP_DEVCTL2,
&cap);
trans->ltr_enabled = cap & PCI_EXP_DEVCTL2_LTR_EN;
Thanks,
Lijo
> +
> +static void nbio_v4_3_program_aspm(struct amdgpu_device *adev)
> +{
> + uint32_t def, data;
> +
> + if (!(adev->ip_versions[PCIE_HWIP][0] == IP_VERSION(7, 4, 0)) &&
> + !(adev->ip_versions[PCIE_HWIP][0] == IP_VERSION(7, 6, 0)))
> + return;
> +
> + def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL);
> + data &= ~PCIE_LC_CNTL__LC_L1_INACTIVITY_MASK;
> + data &= ~PCIE_LC_CNTL__LC_L0S_INACTIVITY_MASK;
> + data |= PCIE_LC_CNTL__LC_PMI_TO_L1_DIS_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL7);
> + data |= PCIE_LC_CNTL7__LC_NBIF_ASPM_INPUT_EN_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL7, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL3);
> + data |= PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL3, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP3);
> + data &= ~RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER_MASK;
> + data &= ~RCC_BIF_STRAP3__STRAP_VLINK_PM_L1_ENTRY_TIMER_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP3, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP5);
> + data &= ~RCC_BIF_STRAP5__STRAP_VLINK_LDN_ENTRY_TIMER_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP5, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_DEVICE_CNTL2);
> + data &= ~BIF_CFG_DEV0_EPF0_DEVICE_CNTL2__LTR_EN_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data);
> +
> + WREG32_SOC15(NBIO, 0, regBIF_CFG_DEV0_EPF0_PCIE_LTR_CAP, 0x10011001);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regPSWUSP0_PCIE_LC_CNTL2);
> + data |= PSWUSP0_PCIE_LC_CNTL2__LC_ALLOW_PDWN_IN_L1_MASK |
> + PSWUSP0_PCIE_LC_CNTL2__LC_ALLOW_PDWN_IN_L23_MASK;
> + data &= ~PSWUSP0_PCIE_LC_CNTL2__LC_RCV_L0_TO_RCV_L0S_DIS_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regPSWUSP0_PCIE_LC_CNTL2, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL4);
> + data |= PCIE_LC_CNTL4__LC_L1_POWERDOWN_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL4, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_RXRECOVER_RXSTANDBY_CNTL);
> + data |= PCIE_LC_RXRECOVER_RXSTANDBY_CNTL__LC_RX_L0S_STANDBY_EN_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regPCIE_LC_RXRECOVER_RXSTANDBY_CNTL, data);
> +
> + nbio_v4_3_program_ltr(adev);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP3);
> + data |= 0x5DE0 << RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER__SHIFT;
> + data |= 0x0010 << RCC_BIF_STRAP3__STRAP_VLINK_PM_L1_ENTRY_TIMER__SHIFT;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP3, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP5);
> + data |= 0x0010 << RCC_BIF_STRAP5__STRAP_VLINK_LDN_ENTRY_TIMER__SHIFT;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_BIF_STRAP5, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL);
> + data |= 0x0 << PCIE_LC_CNTL__LC_L0S_INACTIVITY__SHIFT;
> + data |= 0x9 << PCIE_LC_CNTL__LC_L1_INACTIVITY__SHIFT;
> + data &= ~PCIE_LC_CNTL__LC_PMI_TO_L1_DIS_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL, data);
> +
> + def = data = RREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL3);
> + data &= ~PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK;
> + if (def != data)
> + WREG32_SOC15(NBIO, 0, regPCIE_LC_CNTL3, data);
> +}
> +
> const struct amdgpu_nbio_funcs nbio_v4_3_funcs = {
> .get_hdp_flush_req_offset = nbio_v4_3_get_hdp_flush_req_offset,
> .get_hdp_flush_done_offset = nbio_v4_3_get_hdp_flush_done_offset,
> @@ -365,4 +473,5 @@ const struct amdgpu_nbio_funcs nbio_v4_3_funcs = {
> .init_registers = nbio_v4_3_init_registers,
> .remap_hdp_registers = nbio_v4_3_remap_hdp_registers,
> .get_rom_offset = nbio_v4_3_get_rom_offset,
> + .program_aspm = nbio_v4_3_program_aspm,
> };
> diff --git a/drivers/gpu/drm/amd/amdgpu/soc21.c b/drivers/gpu/drm/amd/amdgpu/soc21.c
> index 31caae7c2495..d8a954bd4c50 100644
> --- a/drivers/gpu/drm/amd/amdgpu/soc21.c
> +++ b/drivers/gpu/drm/amd/amdgpu/soc21.c
> @@ -380,11 +380,12 @@ static void soc21_pcie_gen3_enable(struct amdgpu_device *adev)
>
> static void soc21_program_aspm(struct amdgpu_device *adev)
> {
> -
> - if (amdgpu_aspm == 0)
> + if (!amdgpu_device_should_use_aspm(adev))
> return;
>
> - /* todo */
> + if (!(adev->flags & AMD_IS_APU) &&
> + (adev->nbio.funcs->program_aspm))
> + adev->nbio.funcs->program_aspm(adev);
> }
>
> static void soc21_enable_doorbell_aperture(struct amdgpu_device *adev,
> diff --git a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_offset.h
> index 53802d674e13..4b489d64deaa 100644
> --- a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_offset.h
> +++ b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_offset.h
> @@ -6918,6 +6918,8 @@
> #define regPSWUSCFG0_SSID_CAP 0x2880031
> #define regPSWUSCFG0_SSID_CAP_BASE_IDX 5
>
> +#define regPCIE_LC_RXRECOVER_RXSTANDBY_CNTL 0x2890102
> +#define regPCIE_LC_RXRECOVER_RXSTANDBY_CNTL_BASE_IDX 5
>
> // addressBlock: nbio_nbif0_bif_cfg_dev0_rc_bifcfgdecp
> // base address: 0x10100000
> diff --git a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_sh_mask.h
> index f3cda48bfaeb..d038fd915351 100644
> --- a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_sh_mask.h
> +++ b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_4_3_0_sh_mask.h
> @@ -82045,5 +82045,6 @@
> #define BIF_CFG_DEV0_EPF3_1_RTR_DATA2__FLR_TIME_MASK 0x00000FFFL
> #define BIF_CFG_DEV0_EPF3_1_RTR_DATA2__D3HOTD0_TIME_MASK 0x00FFF000L
>
> +#define PCIE_LC_RXRECOVER_RXSTANDBY_CNTL__LC_RX_L0S_STANDBY_EN_MASK 0x00010000L
>
> #endif
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH V2 6/6] drm/amd/pm: drop unneeded dpm features disablement for SMU 13.0.0/7
2022-06-06 3:11 ` [PATCH V2 6/6] drm/amd/pm: drop unneeded dpm features disablement for SMU 13.0.0/7 Evan Quan
@ 2022-06-06 15:27 ` Alex Deucher
0 siblings, 0 replies; 8+ messages in thread
From: Alex Deucher @ 2022-06-06 15:27 UTC (permalink / raw)
To: Evan Quan
Cc: Deucher, Alexander, Likun Gao, Lazar, Lijo, amd-gfx list, Hawking Zhang
Patches 2-6 are:
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
On Sun, Jun 5, 2022 at 11:13 PM Evan Quan <evan.quan@amd.com> wrote:
>
> PMFW will handle that properly. Driver involvement may cause some
> unexpected issues.
>
> Signed-off-by: Evan Quan <evan.quan@amd.com>
> Change-Id: I77da7d894485a3ac6a1a956e4d2605d0bc730c25
> ---
> drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> index a2db68847477..fd269b8510a5 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> @@ -1402,6 +1402,18 @@ static int smu_disable_dpms(struct smu_context *smu)
> (amdgpu_asic_reset_method(adev) == AMD_RESET_METHOD_BACO)) ||
> ((adev->in_runpm || adev->in_s4) && amdgpu_asic_supports_baco(adev)));
>
> + /*
> + * For SMU 13.0.0 and 13.0.7, PMFW will handle the DPM features(disablement or others)
> + * properly on suspend/reset/unload. Driver involvement may cause some unexpected issues.
> + */
> + switch (adev->ip_versions[MP1_HWIP][0]) {
> + case IP_VERSION(13, 0, 0):
> + case IP_VERSION(13, 0, 7):
> + return 0;
> + default:
> + break;
> + }
> +
> /*
> * For custom pptable uploading, skip the DPM features
> * disable process on Navi1x ASICs.
> @@ -1439,7 +1451,6 @@ static int smu_disable_dpms(struct smu_context *smu)
> case IP_VERSION(11, 0, 0):
> case IP_VERSION(11, 0, 5):
> case IP_VERSION(11, 0, 9):
> - case IP_VERSION(13, 0, 0):
> return 0;
> default:
> break;
> --
> 2.29.0
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-06-06 15:27 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-06 3:11 [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Evan Quan
2022-06-06 3:11 ` [PATCH V2 2/6] drm/amdgpu: avoid to perform undesired clockgating operation Evan Quan
2022-06-06 3:11 ` [PATCH V2 3/6] drm/amd/pm: enable mode1 reset support for SMU 13.0.0 Evan Quan
2022-06-06 3:11 ` [PATCH V2 4/6] drm/amd/pm: drop redundant declarations Evan Quan
2022-06-06 3:11 ` [PATCH V2 5/6] drm/amd/pm: fix compile warnings about redefined MAX_PCIE_CONF Evan Quan
2022-06-06 3:11 ` [PATCH V2 6/6] drm/amd/pm: drop unneeded dpm features disablement for SMU 13.0.0/7 Evan Quan
2022-06-06 15:27 ` Alex Deucher
2022-06-06 12:57 ` [PATCH V2 1/6] drm/amdgpu: enable ASPM support for PCIE 7.4.0/7.6.0 Lazar, Lijo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.