[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1600770804-116365-1-git-send-email-baolin.wang@linux.alibaba.com>
Date: Tue, 22 Sep 2020 18:33:24 +0800
From: Baolin Wang <baolin.wang@...ux.alibaba.com>
To: catalin.marinas@....com, will@...nel.org
Cc: baolin.wang@...ux.alibaba.com, baolin.wang7@...il.com,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: [PATCH] arm64: PCI: Validate the node before setting node id for root bus
If the BIOS disabled the NUMA configuration, but did not change the
proximity domain description in the SRAT table, so the PCI root bus
device may get a incorrect node id by acpi_get_node().
Thus better to add a numa node validation before setting numa node
for the PCI root bus, like pci_acpi_root_get_node() does for X86
architecture.
Signed-off-by: Baolin Wang <baolin.wang@...ux.alibaba.com>
---
arch/arm64/kernel/pci.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c
index 1006ed2..24fe2bd 100644
--- a/arch/arm64/kernel/pci.c
+++ b/arch/arm64/kernel/pci.c
@@ -86,9 +86,13 @@ int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
struct pci_config_window *cfg = bridge->bus->sysdata;
struct acpi_device *adev = to_acpi_device(cfg->parent);
struct device *bus_dev = &bridge->bus->dev;
+ int node = acpi_get_node(acpi_device_handle(adev));
+
+ if (node != NUMA_NO_NODE && !node_online(node))
+ node = NUMA_NO_NODE;
ACPI_COMPANION_SET(&bridge->dev, adev);
- set_dev_node(bus_dev, acpi_get_node(acpi_device_handle(adev)));
+ set_dev_node(bus_dev, node);
}
return 0;
--
1.8.3.1
Powered by blists - more mailing lists