浏览代码

x86: Fix hwpoison code related build failure on 32-bit NUMAQ

This build failure triggers:

 In file included from include/linux/suspend.h:8,
                 from arch/x86/kernel/asm-offsets_32.c:11,
                 from arch/x86/kernel/asm-offsets.c:2:
 include/linux/mm.h:503:2: error: #error SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH > BITS_PER_LONG - NR_PAGEFLAGS

Because due to the hwpoison page flag we ran out of page
flags on 32-bit.

Dont turn on hwpoison on 32-bit NUMA (it's rare in any
case).

Also clean up the Kconfig dependencies in the generic MM
code by introducing ARCH_SUPPORTS_MEMORY_FAILURE.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Linus Torvalds 15 年之前
父节点
当前提交
d949f36f18
共有 2 个文件被更改,包括 14 次插入1 次删除
  1. 11 0
      arch/x86/Kconfig
  2. 3 1
      mm/Kconfig

+ 11 - 0
arch/x86/Kconfig

@@ -432,6 +432,17 @@ config X86_NUMAQ
 	  of Flat Logical.  You will need a new lynxer.elf file to flash your
 	  of Flat Logical.  You will need a new lynxer.elf file to flash your
 	  firmware with - send email to <Martin.Bligh@us.ibm.com>.
 	  firmware with - send email to <Martin.Bligh@us.ibm.com>.
 
 
+config X86_SUPPORTS_MEMORY_FAILURE
+	bool
+	# MCE code calls memory_failure():
+	depends on X86_MCE
+	# On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
+	depends on !X86_NUMAQ
+	# On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
+	depends on X86_64 || !SPARSEMEM
+	select ARCH_SUPPORTS_MEMORY_FAILURE
+	default y
+
 config X86_VISWS
 config X86_VISWS
 	bool "SGI 320/540 (Visual Workstation)"
 	bool "SGI 320/540 (Visual Workstation)"
 	depends on X86_32 && PCI && X86_MPPARSE && PCI_GODIRECT
 	depends on X86_32 && PCI && X86_MPPARSE && PCI_GODIRECT

+ 3 - 1
mm/Kconfig

@@ -244,10 +244,12 @@ config DEFAULT_MMAP_MIN_ADDR
 	  This value can be changed after boot using the
 	  This value can be changed after boot using the
 	  /proc/sys/vm/mmap_min_addr tunable.
 	  /proc/sys/vm/mmap_min_addr tunable.
 
 
+config ARCH_SUPPORTS_MEMORY_FAILURE
+	bool
 
 
 config MEMORY_FAILURE
 config MEMORY_FAILURE
 	depends on MMU
 	depends on MMU
-	depends on X86_MCE
+	depends on ARCH_SUPPORTS_MEMORY_FAILURE
 	bool "Enable recovery from hardware memory errors"
 	bool "Enable recovery from hardware memory errors"
 	help
 	help
 	  Enables code to recover from some memory failures on systems
 	  Enables code to recover from some memory failures on systems