All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.