linux/arch/x86/mm
Mel Gorman 1b000a5dbe x86: make NUMA work on 32-bit
The DISCONTIG memory model on x86 32 bit uses a remap allocator early
in boot. The objective is that portions of every node are mapped in to
the kernel virtual area (KVA) in place of ZONE_NORMAL so that node-local
allocations can be made for pgdat and mem_map structures.

With SPARSEMEM, the amount that is set aside is insufficient for all the
mem_maps to be allocated. During the boot process, it falls back to using
the bootmem allocator. This breaks assumptions that SPARSEMEM makes about
the layout of the mem_map in memory and results in a VM_BUG_ON triggering
due to pfn_to_page() returning garbage values.

This patch only enables the remap allocator for use with DISCONTIG.

Without SRAT support, a compile-error occurs because ACPI table parsing
functions are only available in x86-64. This patch also adds no-op stubs
and prints a warning message. What likely needs to be done is sharing
the table parsing functions between 32 and 64 bit if they are
compatible.

Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2008-01-30 13:33:25 +01:00
..
boot_ioremap_32.c x86: cleanup tlbflush.h variants 2008-01-30 13:30:35 +01:00
discontig_32.c x86: make NUMA work on 32-bit 2008-01-30 13:33:25 +01:00
extable.c x86: unify extable_{32|64}.c 2008-01-30 13:31:41 +01:00
fault_32.c x86: use v8086_mode helper, trivial unification 2008-01-30 13:33:23 +01:00
fault_64.c x86: update reliability argument to printk_address 2008-01-30 13:33:24 +01:00
highmem_32.c x86: kmap_atomic() debugging 2008-01-30 13:30:47 +01:00
hugetlbpage.c i386: move mm 2007-10-11 11:16:47 +02:00
init_32.c x86: unify pgtable accessors which use 2008-01-30 13:32:57 +01:00
init_64.c x86: replace hard coded reservations in 64-bit early boot code with dynamic table 2008-01-30 13:33:17 +01:00
ioremap_32.c i386: move mm 2007-10-11 11:16:47 +02:00
ioremap_64.c x86: pat: e820 cleanup 2008-01-30 13:33:08 +01:00
k8topology_64.c x86: clean up k8topology.c 2008-01-30 13:32:36 +01:00
Makefile x86_64: move mm 2007-10-11 11:17:18 +02:00
Makefile_32 x86: unify extable_{32|64}.c 2008-01-30 13:31:41 +01:00
Makefile_64 x86: unify extable_{32|64}.c 2008-01-30 13:31:41 +01:00
mmap.c x86: unify mmap_{32|64}.c 2008-01-30 13:31:10 +01:00
numa_64.c x86: fix early cpu_to_node panic from nr_free_zone_pages 2008-01-30 13:33:25 +01:00
pageattr_32.c x86: Create clflush() inline, remove hardcoded wbinvd 2007-10-17 20:16:12 +02:00
pageattr_64.c Intel IOMMU: clflush_cache_range now takes size param 2007-10-22 08:13:18 -07:00
pgtable_32.c x86: stop nmi softlockup warnings in show_mem() 2007-10-17 20:15:41 +02:00
srat_64.c x86: change bios_cpu_apicid to percpu data variable fixup 2008-01-30 13:33:21 +01:00