[PATCH v3 3/4] platform/x86/amd/hsmp: Add ACPI client support for Family 1Ah

From: Muralidhara M K

Date: Wed Aug 19 2026 - 03:38:16 EST


The ACPI HSMP device (HID AMDI0097) on the Family 1Ah client platforms
(Models 80h-8Fh and E0h-E3h) describes its mailbox the same way server
platforms already do, via _CRS/_DSD, so hsmp_parse_acpi_table() and
hsmp_get_uid() need no client-specific handling.

Client firmware does not respond to the interface version query
(HSMP_CLIENT_GET_INTERFACE_VER). Instead, query the metrics table version,
as it is the only version-related request supported by the client firmware.
Server-side behavior remains unchanged.

Signed-off-by: Muralidhara M K <muralidhara.mk@xxxxxxx>
---
drivers/platform/x86/amd/hsmp/acpi.c | 2 +-
drivers/platform/x86/amd/hsmp/hsmp.c | 8 ++++++--
2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c
index 8257cd1da48e..275258ee86bf 100644
--- a/drivers/platform/x86/amd/hsmp/acpi.c
+++ b/drivers/platform/x86/amd/hsmp/acpi.c
@@ -557,7 +557,7 @@ static int init_acpi(struct device *dev)
return ret;
}

- if (hsmp_pdev->proto_ver >= HSMP_PROTO_VER6) {
+ if (is_client_platform() || hsmp_pdev->proto_ver >= HSMP_PROTO_VER6) {
ret = hsmp_get_tbl_dram_base(sock_ind);
if (ret)
dev_info(dev, "Failed to init metric table\n");
diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c
index 60889c1b1099..f35a891772e0 100644
--- a/drivers/platform/x86/amd/hsmp/hsmp.c
+++ b/drivers/platform/x86/amd/hsmp/hsmp.c
@@ -196,12 +196,16 @@ static const struct hsmp_plat_desc hsmp_desc_server = {
.metric_dram_msg = HSMP_GET_METRIC_TABLE_DRAM_ADDR,
};

-/* The client drives a different mailbox with the Ryzen Master SMC message set */
+/*
+ * Client firmware queries the metrics table version instead of the
+ * interface version (HSMP_CLIENT_GET_INTERFACE_VER) to provide a unified
+ * interface across multiple client platforms.
+ */
static const struct hsmp_plat_desc hsmp_desc_client = {
.msg_desc = hsmp_client_msg_desc_table,
.num_msgs = HSMP_CLIENT_MSG_ID_MAX,
.test_msg = HSMP_CLIENT_TEST,
- .proto_ver_msg = HSMP_CLIENT_GET_INTERFACE_VER,
+ .proto_ver_msg = HSMP_CLIENT_GET_METRICS_TABLE_VER,
.metric_tbl_msg = HSMP_CLIENT_GET_METRICS_TABLE,
.metric_dram_msg = HSMP_CLIENT_GET_METRICS_TABLE_DRAM_ADDR,
};
--
2.34.1