diff --git a/patches.suse/powerpc-numa-Consider-the-max-NUMA-node-for-migratab.patch b/patches.suse/powerpc-numa-Consider-the-max-NUMA-node-for-migratab.patch new file mode 100644 index 0000000..e62acc0 --- /dev/null +++ b/patches.suse/powerpc-numa-Consider-the-max-NUMA-node-for-migratab.patch @@ -0,0 +1,82 @@ +From 9c7248bb8de31f51c693bfa6a6ea53b1c07e0fa8 Mon Sep 17 00:00:00 2001 +From: Laurent Dufour +Date: Tue, 11 May 2021 09:31:36 +0200 +Subject: [PATCH] powerpc/numa: Consider the max NUMA node for migratable LPAR + +References: bsc#1209999 ltc#202140 bsc#1190544 ltc#194520 bsc#1142685 ltc#179509 FATE#327775 git-fixes +Patch-mainline: v5.15-rc1 +Git-commit: 9c7248bb8de31f51c693bfa6a6ea53b1c07e0fa8 + +When a LPAR is migratable, we should consider the maximum possible NUMA +node instead of the number of NUMA nodes from the actual system. + +The DT property 'ibm,current-associativity-domains' defines the maximum +number of nodes the LPAR can see when running on that box. But if the +LPAR is being migrated on another box, it may see up to the nodes +defined by 'ibm,max-associativity-domains'. So if a LPAR is migratable, +that value should be used. + +Unfortunately, there is no easy way to know if an LPAR is migratable or +not. The hypervisor exports the property 'ibm,migratable-partition' in +the case it set to migrate partition, but that would not mean that the +current partition is migratable. + +Without this patch, when a LPAR is started on a 2 node box and then +migrated to a 3 node box, the hypervisor may spread the LPAR's CPUs on +the 3rd node. In that case if a CPU from that 3rd node is added to the +LPAR, it will be wrongly assigned to the node because the kernel has +been set to use up to 2 nodes (the configuration of the departure node). +With this patch applies, the CPU is correctly added to the 3rd node. + +Fixes: f9f130ff2ec9 ("powerpc/numa: Detect support for coregroup") +Signed-off-by: Laurent Dufour +Reviewed-by: Srikar Dronamraju +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20210511073136.17795-1-ldufour@linux.ibm.com +Acked-by: Michal Suchanek +--- + arch/powerpc/mm/numa.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c +index f2bf98bdcea2..094a1076fd1f 100644 +--- a/arch/powerpc/mm/numa.c ++++ b/arch/powerpc/mm/numa.c +@@ -893,7 +893,7 @@ static void __init setup_node_data(int nid, u64 start_pfn, u64 end_pfn) + static void __init find_possible_nodes(void) + { + struct device_node *rtas; +- const __be32 *domains; ++ const __be32 *domains = NULL; + int prop_length, max_nodes; + u32 i; + +@@ -909,9 +909,14 @@ static void __init find_possible_nodes(void) + * it doesn't exist, then fallback on ibm,max-associativity-domains. + * Current denotes what the platform can support compared to max + * which denotes what the Hypervisor can support. ++ * ++ * If the LPAR is migratable, new nodes might be activated after a LPM, ++ * so we should consider the max number in that case. + */ +- domains = of_get_property(rtas, "ibm,current-associativity-domains", +- &prop_length); ++ if (!of_get_property(of_root, "ibm,migratable-partition", NULL)) ++ domains = of_get_property(rtas, ++ "ibm,current-associativity-domains", ++ &prop_length); + if (!domains) { + domains = of_get_property(rtas, "ibm,max-associativity-domains", + &prop_length); +@@ -920,6 +925,8 @@ static void __init find_possible_nodes(void) + } + + max_nodes = of_read_number(&domains[min_common_depth], 1); ++ pr_info("Partition configured for %d NUMA nodes.\n", max_nodes); ++ + for (i = 0; i < max_nodes; i++) { + if (!node_possible(i)) + node_set(i, node_possible_map); +-- +2.40.0 + diff --git a/series.conf b/series.conf index ecd1ced..4514d51 100644 --- a/series.conf +++ b/series.conf @@ -61546,6 +61546,7 @@ patches.suse/memcg-enable-accounting-of-ipc-resources.patch patches.suse/mm-vmscan-guarantee-drop_slab_node-termination.patch patches.suse/s390-pv-fix-the-forcing-of-the-swiotlb + patches.suse/powerpc-numa-Consider-the-max-NUMA-node-for-migratab.patch patches.suse/pseries-drmem-update-LMBs-after-LPM.patch patches.suse/powerpc-pseries-Prevent-free-CPU-ids-being-reused-on.patch patches.suse/powerpc-pseries-Fix-build-error-when-NUMA-n.patch