]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
platform/x86/amd/hsmp: Replace amd_num_nodes() with topology_max_packages()
authorSuma Hegde <suma.hegde@amd.com>
Tue, 16 Sep 2025 04:37:36 +0000 (04:37 +0000)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Wed, 15 Oct 2025 08:53:03 +0000 (11:53 +0300)
The amd_num_nodes() function returns the number of data fabrics present.
On older EPYC processors, there was one data fabric per socket.
However, newer EPYC processors have more than one data fabric per
socket, leading to a situation where the number of sockets is not equal
to the number of data fabrics. Therefore, it is appropriate to use
topology_max_packages() to know the number of sockets in the system.

Also remove node.h header inclusion and socket number comparison against
data fabric nodes.

plat.c is supported only for legacy platforms where socket number and
data fabric numbers are same. So it can remain unchanged.

Signed-off-by: Suma Hegde <suma.hegde@amd.com>
Link: https://patch.msgid.link/20250916043736.3279947-1-suma.hegde@amd.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/amd/hsmp/acpi.c

index d0b74d243ce4cbcd01ee14c61b0bb59059c68454..97ed71593bdf3697d57103349326e8a4869d674c 100644 (file)
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/sysfs.h>
+#include <linux/topology.h>
 #include <linux/uuid.h>
 
 #include <uapi/asm-generic/errno-base.h>
 
-#include <asm/amd/node.h>
-
 #include "hsmp.h"
 
 #define DRIVER_NAME            "hsmp_acpi"
@@ -586,9 +585,9 @@ static int hsmp_acpi_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        if (!hsmp_pdev->is_probed) {
-               hsmp_pdev->num_sockets = amd_num_nodes();
-               if (hsmp_pdev->num_sockets == 0 || hsmp_pdev->num_sockets > MAX_AMD_NUM_NODES) {
-                       dev_err(&pdev->dev, "Wrong number of sockets\n");
+               hsmp_pdev->num_sockets = topology_max_packages();
+               if (!hsmp_pdev->num_sockets) {
+                       dev_err(&pdev->dev, "No CPU sockets detected\n");
                        return -ENODEV;
                }