diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-12-09 10:42:53 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-12-09 10:42:53 +0000 |
commit | 6369c4faa303cd4e8af9ff6ad73315122d9defc5 (patch) | |
tree | 170dcce577b237ae629f6572685f65c2d3f99171 /xen/include/asm-x86/mm.h | |
parent | 4d817e3923416c21a61c0df32f244893974eb2e8 (diff) | |
download | xen-6369c4faa303cd4e8af9ff6ad73315122d9defc5.tar.gz xen-6369c4faa303cd4e8af9ff6ad73315122d9defc5.tar.bz2 xen-6369c4faa303cd4e8af9ff6ad73315122d9defc5.zip |
SRAT memory hotplug 2/2: Support overlapped and sparse node memory arrangement.
Currently xen hypervisor use nodes to keep start/end address of
node. It assume memory among nodes has no overlap, this is not always
true, especially if we have memory hotplug support in the system.
This patch backport Linux kernel's memblks to support overlapping
among node. The memblks will be used both for checking conflict, and
caculate memnode_shift.
Also, currently if there is no memory populated in a node when system
booting, the node will be unparsed later, and the corresponding CPU's
numa information will be removed also. This patch will keep the CPU
information.
One thing need notice is, currently we caculate memnode_shift with all
memory, including un-populated ones. This should work if the smallest
chuck is not so small. Other option can be flags in the page_info
structure, etc.
The memnodemap is changed from paddr to pdx, both to save space, and
also because currently most access is from pfn.
A flag is mem_hotplug added if there is hotplug memory range.
Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com>
Diffstat (limited to 'xen/include/asm-x86/mm.h')
-rw-r--r-- | xen/include/asm-x86/mm.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index 14505a5a36..e2134d4f07 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -368,6 +368,7 @@ pae_copy_root(struct vcpu *v, l3_pgentry_t *l3tab); int check_descriptor(const struct domain *, struct desc_struct *d); extern int opt_allow_hugepage; +extern int mem_hotplug; /****************************************************************************** * With shadow pagetables, the different kinds of address start |