<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<p style="font-family:Calibri;font-size:10pt;color:#0000FF;margin:5pt;font-style:normal;font-weight:normal;text-decoration:none;" align="Left">
[AMD Official Use Only - AMD Internal Distribution Only]<br>
</p>
<br>
<div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
Reviewed-and-tested-by: Ce Sun <cesun102@amd.com></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
Regards,</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
Ce,Sun</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> amd-gfx <amd-gfx-bounces@lists.freedesktop.org> on behalf of Lijo Lazar <lijo.lazar@amd.com><br>
<b>Sent:</b> Thursday, July 24, 2025 4:56 PM<br>
<b>To:</b> amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org><br>
<b>Cc:</b> Zhang, Hawking <Hawking.Zhang@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Kamal, Asad <Asad.Kamal@amd.com>; Sun, Ce(Overlord) <Ce.Sun@amd.com><br>
<b>Subject:</b> [PATCH] drm/amd/pm: Add priority messages for SMU v13.0.6</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Certain messages will processed with high priority by PMFW even if it<br>
hasn't responded to a previous message. Send the priority message<br>
regardless of the success/fail status of the previous message. Add<br>
support on SMUv13.0.6 and SMUv13.0.12<br>
<br>
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com><br>
---<br>
drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h | 1 +<br>
.../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c | 2 +-<br>
.../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c | 2 +-<br>
drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c | 14 +++++++++-----<br>
4 files changed, 12 insertions(+), 7 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h<br>
index d7a9e41820fa..aaf148591a98 100644<br>
--- a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h<br>
+++ b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h<br>
@@ -469,6 +469,7 @@ enum smu_feature_mask {<br>
/* Message category flags */<br>
#define SMU_MSG_VF_FLAG (1U << 0)<br>
#define SMU_MSG_RAS_PRI (1U << 1)<br>
+#define SMU_MSG_HI_PRI (1U << 2)<br>
<br>
/* Firmware capability flags */<br>
#define SMU_FW_CAP_RAS_PRI (1U << 0)<br>
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c<br>
index 02a455a31c25..17e0303f603b 100644<br>
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c<br>
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c<br>
@@ -106,7 +106,7 @@ const struct cmn2asic_msg_mapping smu_v13_0_12_message_map[SMU_MSG_MAX_COUNT] =<br>
MSG_MAP(GetDpmFreqByIndex, PPSMC_MSG_GetDpmFreqByIndex, 1),<br>
MSG_MAP(SetPptLimit, PPSMC_MSG_SetPptLimit, 0),<br>
MSG_MAP(GetPptLimit, PPSMC_MSG_GetPptLimit, 1),<br>
- MSG_MAP(GfxDeviceDriverReset, PPSMC_MSG_GfxDriverReset, SMU_MSG_RAS_PRI),<br>
+ MSG_MAP(GfxDeviceDriverReset, PPSMC_MSG_GfxDriverReset, SMU_MSG_RAS_PRI | SMU_MSG_HI_PRI),<br>
MSG_MAP(DramLogSetDramAddrHigh, PPSMC_MSG_DramLogSetDramAddrHigh, 0),<br>
MSG_MAP(DramLogSetDramAddrLow, PPSMC_MSG_DramLogSetDramAddrLow, 0),<br>
MSG_MAP(DramLogSetDramSize, PPSMC_MSG_DramLogSetDramSize, 0),<br>
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c<br>
index 9cc294f4708b..c22b3f646355 100644<br>
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c<br>
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c<br>
@@ -145,7 +145,7 @@ static const struct cmn2asic_msg_mapping smu_v13_0_6_message_map[SMU_MSG_MAX_COU<br>
MSG_MAP(GetDpmFreqByIndex, PPSMC_MSG_GetDpmFreqByIndex, 1),<br>
MSG_MAP(SetPptLimit, PPSMC_MSG_SetPptLimit, 0),<br>
MSG_MAP(GetPptLimit, PPSMC_MSG_GetPptLimit, 1),<br>
- MSG_MAP(GfxDeviceDriverReset, PPSMC_MSG_GfxDriverReset, SMU_MSG_RAS_PRI),<br>
+ MSG_MAP(GfxDeviceDriverReset, PPSMC_MSG_GfxDriverReset, SMU_MSG_RAS_PRI | SMU_MSG_HI_PRI),<br>
MSG_MAP(DramLogSetDramAddrHigh, PPSMC_MSG_DramLogSetDramAddrHigh, 0),<br>
MSG_MAP(DramLogSetDramAddrLow, PPSMC_MSG_DramLogSetDramAddrLow, 0),<br>
MSG_MAP(DramLogSetDramSize, PPSMC_MSG_DramLogSetDramSize, 0),<br>
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c<br>
index 59f9abd0f7b8..f1f5cd8c2cd9 100644<br>
--- a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c<br>
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c<br>
@@ -256,11 +256,12 @@ static int __smu_cmn_ras_filter_msg(struct smu_context *smu,<br>
{<br>
struct amdgpu_device *adev = smu->adev;<br>
uint32_t flags, resp;<br>
- bool fed_status;<br>
+ bool fed_status, pri;<br>
<br>
flags = __smu_cmn_get_msg_flags(smu, msg);<br>
*poll = true;<br>
<br>
+ pri = !!(flags & SMU_MSG_HI_PRI);<br>
/* When there is RAS fatal error, FW won't process non-RAS priority<br>
* messages. Don't allow any messages other than RAS priority messages.<br>
*/<br>
@@ -272,15 +273,18 @@ static int __smu_cmn_ras_filter_msg(struct smu_context *smu,<br>
smu_get_message_name(smu, msg));<br>
return -EACCES;<br>
}<br>
+ }<br>
<br>
+ if (pri || fed_status) {<br>
/* FW will ignore non-priority messages when a RAS fatal error<br>
- * is detected. Hence it is possible that a previous message<br>
- * wouldn't have got response. Allow to continue without polling<br>
- * for response status for priority messages.<br>
+ * or reset condition is detected. Hence it is possible that a<br>
+ * previous message wouldn't have got response. Allow to<br>
+ * continue without polling for response status for priority<br>
+ * messages.<br>
*/<br>
resp = RREG32(smu->resp_reg);<br>
dev_dbg(adev->dev,<br>
- "Sending RAS priority message %s response status: %x",<br>
+ "Sending priority message %s response status: %x",<br>
smu_get_message_name(smu, msg), resp);<br>
if (resp == 0)<br>
*poll = false;<br>
-- <br>
2.49.0<br>
<br>
</div>
</span></font></div>
</div>
</body>
</html>