linux/arch
Andi Kleen 68a3a7feb0 [PATCH] x86_64: Reserve SRAT hotadd memory on x86-64
From: Keith Mannthey, Andi Kleen

Implement memory hotadd without sparsemem. The memory in the SRAT
hotadd area is just preserved instead and can be activated later.

There are a few restrictions:
- Only one continuous hotadd area allowed per node

The main problem is dealing with the many buggy SRAT tables
that are out there. The strategy here is to reject anything
suspicious.

Originally from Keith Mannthey, with several hacks and changes by AK
and also contributions from Andrew Morton

[ TBD: Problems pointed out by KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>:

 1) Goto's rebuild_zonelist patch will not work if CONFIG_MEMORY_HOTPLUG=n.

    Rebuilding zonelist is necessary when the system has just memory <
    4G at boot, and hot add memory > 4G.  because x86_64 has DMA32,
    ZONE_NORAML is not included into zonelist at boot time if system
    doesn't have memory >4G at boot.

    [AK: should just force the higher zones at boot time when SRAT tells us]

 2) zone and node's spanned_pages and present_pages are not incremented.
    They should be.

    For example, our server (ia64/Fujitsu PrimeQuest) can equip memory
    from 4G to 1T(maybe 2T in future), and SRAT will *always* say we have
    possible 1T +memory.  (Microsoft requires "write all possible memory
    in SRAT") When we reserve memmap for possible 1T memory, Linux will
    not work well in +minimum 4G configuraion ;)

    [AK: needs limiting to 5-10% of max memory]
 ]

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-04-09 11:53:16 -07:00
..
alpha Manual merge with Linus. 2006-04-02 00:08:05 -05:00
arm Merge master.kernel.org:/home/rmk/linux-2.6-arm 2006-04-02 13:34:00 -07:00
arm26 [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
cris [PATCH] unify PFN_* macros 2006-03-27 08:44:48 -08:00
frv [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
h8300 [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
i386 [PATCH] x86_64: Support memory hotadd without sparsemem 2006-04-09 11:53:16 -07:00
ia64 [IA64] Avoid "u64 foo : 32;" for gcc3 vs. gcc4 compatibility 2006-03-31 10:28:29 -08:00
m32r [PATCH] unify PFN_* macros 2006-03-27 08:44:48 -08:00
m68k [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
m68knommu [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
mips Manual merge with Linus. 2006-04-02 00:08:05 -05:00
parisc [PARISC] Enabled some NLS modules in a500, b180 and c3000 defconfigs 2006-03-30 17:48:58 +00:00
powerpc Merge master.kernel.org:/pub/scm/linux/kernel/git/dtor/input 2006-04-02 12:49:19 -07:00
ppc [PATCH] for_each_possible_cpu: ppc 2006-03-29 13:44:16 +11:00
s390 [PATCH] for_each_possible_cpu: s390 2006-03-31 12:18:52 -08:00
sh [PATCH] Don't pass boot parameters to argv_init[] 2006-03-31 12:18:53 -08:00
sh64 [PATCH] RTC: Remove some duplicate BCD definitions 2006-03-28 09:16:01 -08:00
sparc [SPARC]: Wire up sys_sync_file_range() into syscall tables. 2006-03-31 23:49:34 -08:00
sparc64 [SPARC]: Wire up sys_sync_file_range() into syscall tables. 2006-03-31 23:49:34 -08:00
um [PATCH] uml: check for differences in host support 2006-03-31 12:18:52 -08:00
v850 [PATCH] bitops: v850: use generic bitops 2006-03-26 08:57:14 -08:00
x86_64 [PATCH] x86_64: Reserve SRAT hotadd memory on x86-64 2006-04-09 11:53:16 -07:00
xtensa [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00