Skip to content

Commit 3149efc

Browse files
longlimsftliuw
authored andcommitted
PCI: hv: Fix NUMA node assignment when kernel boots with custom NUMA topology
When kernel boots with a NUMA topology with some NUMA nodes offline, the PCI driver should only set an online NUMA node on the device. This can happen during KDUMP where some NUMA nodes are not made online by the KDUMP kernel. This patch also fixes the case where kernel is booting with "numa=off". Fixes: 999dd95 ("PCI: hv: Add support for protocol 1.3 and support PCI_BUS_RELATIONS2") Signed-off-by: Long Li <longli@microsoft.com> Reviewed-by: Michael Kelley <mikelley@microsoft.com> Tested-by: Purna Pavan Chandra Aekkaladevi <paekkaladevi@microsoft.com> Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Link: https://lore.kernel.org/r/1643247814-15184-1-git-send-email-longli@linuxonhyperv.com Signed-off-by: Wei Liu <wei.liu@kernel.org>
1 parent 9ff5549 commit 3149efc

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

drivers/pci/controller/pci-hyperv.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2155,8 +2155,17 @@ static void hv_pci_assign_numa_node(struct hv_pcibus_device *hbus)
21552155
if (!hv_dev)
21562156
continue;
21572157

2158-
if (hv_dev->desc.flags & HV_PCI_DEVICE_FLAG_NUMA_AFFINITY)
2159-
set_dev_node(&dev->dev, hv_dev->desc.virtual_numa_node);
2158+
if (hv_dev->desc.flags & HV_PCI_DEVICE_FLAG_NUMA_AFFINITY &&
2159+
hv_dev->desc.virtual_numa_node < num_possible_nodes())
2160+
/*
2161+
* The kernel may boot with some NUMA nodes offline
2162+
* (e.g. in a KDUMP kernel) or with NUMA disabled via
2163+
* "numa=off". In those cases, adjust the host provided
2164+
* NUMA node to a valid NUMA node used by the kernel.
2165+
*/
2166+
set_dev_node(&dev->dev,
2167+
numa_map_to_online_node(
2168+
hv_dev->desc.virtual_numa_node));
21602169

21612170
put_pcichild(hv_dev);
21622171
}

0 commit comments

Comments
 (0)