[PATCH v3 3/4] platform/x86/amd/hsmp: Add ACPI client support for Family 1Ah
Muralidhara M K <[email protected]>
| Newsgroups | org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> --- 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