]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Aug 2017 19:30:07 +0000 (12:30 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Aug 2017 19:30:07 +0000 (12:30 -0700)
added patches:
revert-powerpc-numa-fix-percpu-allocations-to-be-numa-aware.patch

queue-3.18/revert-powerpc-numa-fix-percpu-allocations-to-be-numa-aware.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/revert-powerpc-numa-fix-percpu-allocations-to-be-numa-aware.patch b/queue-3.18/revert-powerpc-numa-fix-percpu-allocations-to-be-numa-aware.patch
new file mode 100644 (file)
index 0000000..030d8e9
--- /dev/null
@@ -0,0 +1,85 @@
+From 2c12a32c20594139ddc5aa11245fd7cbe00a61b7 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Thu, 3 Aug 2017 12:26:04 -0700
+Subject: Revert "powerpc/numa: Fix percpu allocations to be NUMA aware"
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+This reverts commit 138bb14846a5856747694ae9ef565c9eb4533a1e which is
+commit ba4a648f12f4cd0a8003dd229b6ca8a53348ee4b upstream.
+
+Michal Hocko writes:
+
+JFYI. We have encountered a regression after applying this patch on a
+large ppc machine. While the patch is the right thing to do it doesn't
+work well with the current vmalloc area size on ppc and large machines
+where NUMA nodes are very far from each other. Just for the reference
+the boot fails on such a machine with bunch of warning preceeding it.
+See http://lkml.kernel.org/r/20170724134240.GL25221@dhcp22.suse.cz
+
+It seems the right thing to do is to enlarge the vmalloc space on ppc
+but this is not the case in the upstream kernel yet AFAIK. It is also
+questionable whether that is a stable material but I will decision on
+you here.
+
+We have reverted this patch from our 4.4 based kernel.
+
+Newer kernels do not have enlarged vmalloc space yet AFAIK so they won't
+work properly eiter. This bug is quite rare though because you need a
+specific HW configuration to trigger the issue - namely NUMA nodes have
+to be far away from each other in the physical memory space.
+
+Cc: Michal Hocko <mhocko@kernel.org>
+Cc: Michael Ellerman <mpe@ellerman.id.au>
+Cc: Nicholas Piggin <npiggin@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/include/asm/topology.h |   14 --------------
+ arch/powerpc/kernel/setup_64.c      |    4 ++--
+ 2 files changed, 2 insertions(+), 16 deletions(-)
+
+--- a/arch/powerpc/include/asm/topology.h
++++ b/arch/powerpc/include/asm/topology.h
+@@ -44,22 +44,8 @@ extern void __init dump_numa_cpu_topolog
+ extern int sysfs_add_device_to_node(struct device *dev, int nid);
+ extern void sysfs_remove_device_from_node(struct device *dev, int nid);
+-static inline int early_cpu_to_node(int cpu)
+-{
+-      int nid;
+-
+-      nid = numa_cpu_lookup_table[cpu];
+-
+-      /*
+-       * Fall back to node 0 if nid is unset (it should be, except bugs).
+-       * This allows callers to safely do NODE_DATA(early_cpu_to_node(cpu)).
+-       */
+-      return (nid < 0) ? 0 : nid;
+-}
+ #else
+-static inline int early_cpu_to_node(int cpu) { return 0; }
+-
+ static inline void dump_numa_cpu_topology(void) {}
+ static inline int sysfs_add_device_to_node(struct device *dev, int nid)
+--- a/arch/powerpc/kernel/setup_64.c
++++ b/arch/powerpc/kernel/setup_64.c
+@@ -754,7 +754,7 @@ void ppc64_boot_msg(unsigned int src, co
+ static void * __init pcpu_fc_alloc(unsigned int cpu, size_t size, size_t align)
+ {
+-      return __alloc_bootmem_node(NODE_DATA(early_cpu_to_node(cpu)), size, align,
++      return __alloc_bootmem_node(NODE_DATA(cpu_to_node(cpu)), size, align,
+                                   __pa(MAX_DMA_ADDRESS));
+ }
+@@ -765,7 +765,7 @@ static void __init pcpu_fc_free(void *pt
+ static int pcpu_cpu_distance(unsigned int from, unsigned int to)
+ {
+-      if (early_cpu_to_node(from) == early_cpu_to_node(to))
++      if (cpu_to_node(from) == cpu_to_node(to))
+               return LOCAL_DISTANCE;
+       else
+               return REMOTE_DISTANCE;
index 94d41f51cb10dabcc589f16dc61d988405a86809..f7cba9ffa0ffd5ccd210a731f0839b9c15bd3637 100644 (file)
@@ -7,3 +7,4 @@ drm-vmwgfx-fix-gcc-7.1.1-warning.patch
 kvm-ppc-book3s-hv-restore-critical-sprs-to-host-values-on-guest-exit.patch
 kvm-ppc-book3s-hv-reload-htm-registers-explicitly.patch
 kvm-ppc-book3s-hv-save-restore-host-values-of-debug-registers.patch
+revert-powerpc-numa-fix-percpu-allocations-to-be-numa-aware.patch