diff --git a/patches.suse/powerpc-papr_scm-Update-the-NUMA-distance-table-for-.patch b/patches.suse/powerpc-papr_scm-Update-the-NUMA-distance-table-for-.patch new file mode 100644 index 0000000..c02e78e --- /dev/null +++ b/patches.suse/powerpc-papr_scm-Update-the-NUMA-distance-table-for-.patch @@ -0,0 +1,84 @@ +From b277fc793daf258877b4c0744b52f69d6e6ba22e Mon Sep 17 00:00:00 2001 +From: "Aneesh Kumar K.V" +Date: Tue, 4 Apr 2023 09:44:33 +0530 +Subject: [PATCH] powerpc/papr_scm: Update the NUMA distance table for the + target node + +References: bsc#1209999 ltc#202140 bsc#1142685 ltc#179509 FATE#327775 git-fixes +Patch-mainline: v6.3-rc7 +Git-commit: b277fc793daf258877b4c0744b52f69d6e6ba22e + +Platform device helper routines won't update the NUMA distance table +while creating a platform device, even if the device is present on a +NUMA node that doesn't have memory or CPU. This is especially true for +pmem devices. If the target node of the pmem device is not online, we +find the nearest online node to the device and associate the pmem device +with that online node. To find the nearest online node, we should have +the numa distance table updated correctly. Update the distance +information during the device probe. + +For a papr scm device on NUMA node 3 distance_lookup_table value for +distance_ref_points_depth = 2 before and after fix is below: + +Before fix: + node 3 distance depth 0 - 0 + node 3 distance depth 1 - 0 + node 4 distance depth 0 - 4 + node 4 distance depth 1 - 2 + node 5 distance depth 0 - 5 + node 5 distance depth 1 - 1 + +After fix + node 3 distance depth 0 - 3 + node 3 distance depth 1 - 1 + node 4 distance depth 0 - 4 + node 4 distance depth 1 - 2 + node 5 distance depth 0 - 5 + node 5 distance depth 1 - 1 + +Without the fix, the nearest numa node to the pmem device (NUMA node 3) +will be picked as 4. After the fix, we get the correct numa node which +is 5. + +Fixes: da1115fdbd6e ("powerpc/nvdimm: Pick nearby online node if the device node is not online") +Signed-off-by: Aneesh Kumar K.V +Signed-off-by: Michael Ellerman +Link: https://msgid.link/20230404041433.1781804-1-aneesh.kumar@linux.ibm.com +Acked-by: Michal Suchanek +--- + arch/powerpc/mm/numa.c | 1 + + arch/powerpc/platforms/pseries/papr_scm.c | 7 +++++++ + 2 files changed, 8 insertions(+) + +diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c +--- a/arch/powerpc/mm/numa.c ++++ b/arch/powerpc/mm/numa.c +@@ -312,6 +312,7 @@ void update_numa_distance(struct device_ + return; + } + } ++EXPORT_SYMBOL_GPL(update_numa_distance); + + static int __init find_primary_domain_index(void) + { +diff --git a/arch/powerpc/platforms/pseries/papr_scm.c b/arch/powerpc/platforms/pseries/papr_scm.c +index 2f8385523a13..1a53e048ceb7 100644 +--- a/arch/powerpc/platforms/pseries/papr_scm.c ++++ b/arch/powerpc/platforms/pseries/papr_scm.c +@@ -1428,6 +1428,13 @@ static int papr_scm_probe(struct platform_device *pdev) + return -ENODEV; + } + ++ /* ++ * open firmware platform device create won't update the NUMA ++ * distance table. For PAPR SCM devices we use numa_map_to_online_node() ++ * to find the nearest online NUMA node and that requires correct ++ * distance table information. ++ */ ++ update_numa_distance(dn); + + p = kzalloc(sizeof(*p), GFP_KERNEL); + if (!p) +-- +2.40.0 + diff --git a/series.conf b/series.conf index 5d6ae8a..5b60fbd 100644 --- a/series.conf +++ b/series.conf @@ -63236,6 +63236,7 @@ patches.suse/ring-buffer-Fix-race-while-reader-and-writer-are-on-the-same-page.patch patches.suse/ftrace-Mark-get_lock_parent_ip-__always_inline.patch patches.suse/cifs-fix-negotiate-context-parsing.patch + patches.suse/powerpc-papr_scm-Update-the-NUMA-distance-table-for-.patch # dhowells/linux-fs keys-uefi patches.suse/0001-KEYS-Allow-unrestricted-boot-time-addition-of-keys-t.patch