mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 02:36:02 +00:00
platform/x86/amd/hsmp: Check HSMP support on AMD family of processors
HSMP interface is supported only on few x86 processors from AMD. Accessing HSMP registers on rest of the platforms might cause unexpected behaviour. So add a check. Also unavailability of this interface on rest of the processors is not an error. Hence, use pr_info() instead of the pr_err() to log the message. Signed-off-by: Suma Hegde <suma.hegde@amd.com> Reviewed-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com> Link: https://lore.kernel.org/r/20240603081512.142909-1-suma.hegde@amd.com Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
306aec7eea
commit
77f1972bdc
@ -907,16 +907,44 @@ static int hsmp_plat_dev_register(void)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* This check is only needed for backward compatibility of previous platforms.
|
||||
* All new platforms are expected to support ACPI based probing.
|
||||
*/
|
||||
static bool legacy_hsmp_support(void)
|
||||
{
|
||||
if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
|
||||
return false;
|
||||
|
||||
switch (boot_cpu_data.x86) {
|
||||
case 0x19:
|
||||
switch (boot_cpu_data.x86_model) {
|
||||
case 0x00 ... 0x1F:
|
||||
case 0x30 ... 0x3F:
|
||||
case 0x90 ... 0x9F:
|
||||
case 0xA0 ... 0xAF:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
case 0x1A:
|
||||
switch (boot_cpu_data.x86_model) {
|
||||
case 0x00 ... 0x1F:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int __init hsmp_plt_init(void)
|
||||
{
|
||||
int ret = -ENODEV;
|
||||
|
||||
if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD || boot_cpu_data.x86 < 0x19) {
|
||||
pr_err("HSMP is not supported on Family:%x model:%x\n",
|
||||
boot_cpu_data.x86, boot_cpu_data.x86_model);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* amd_nb_num() returns number of SMN/DF interfaces present in the system
|
||||
* if we have N SMN/DF interfaces that ideally means N sockets
|
||||
@ -930,7 +958,15 @@ static int __init hsmp_plt_init(void)
|
||||
return ret;
|
||||
|
||||
if (!plat_dev.is_acpi_device) {
|
||||
ret = hsmp_plat_dev_register();
|
||||
if (legacy_hsmp_support()) {
|
||||
/* Not ACPI device, but supports HSMP, register a plat_dev */
|
||||
ret = hsmp_plat_dev_register();
|
||||
} else {
|
||||
/* Not ACPI, Does not support HSMP */
|
||||
pr_info("HSMP is not supported on Family:%x model:%x\n",
|
||||
boot_cpu_data.x86, boot_cpu_data.x86_model);
|
||||
ret = -ENODEV;
|
||||
}
|
||||
if (ret)
|
||||
platform_driver_unregister(&amd_hsmp_driver);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user