diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2011-02-04 11:46:43 -0700 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2011-02-04 11:46:43 -0700 |
commit | c64eae9a73a847c1698f913c893aa4012d2a30b0 (patch) | |
tree | 732684b9ffe9dfd6e9a11b1f006eaaefeb0e945b /arch/x86/xen/setup.c | |
parent | c9e358dfc4a8cb2227172ef77908c2e0ee17bcb9 (diff) | |
parent | ebf53826e105f488f4f628703a108e98940d1dc5 (diff) |
Merge commit 'v2.6.38-rc3' into devicetree/next
Diffstat (limited to 'arch/x86/xen/setup.c')
-rw-r--r-- | arch/x86/xen/setup.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c index b5a7f928234b..a8a66a50d446 100644 --- a/arch/x86/xen/setup.c +++ b/arch/x86/xen/setup.c @@ -179,8 +179,13 @@ char * __init xen_memory_setup(void) e820.nr_map = 0; xen_extra_mem_start = mem_end; for (i = 0; i < memmap.nr_entries; i++) { - unsigned long long end = map[i].addr + map[i].size; + unsigned long long end; + /* Guard against non-page aligned E820 entries. */ + if (map[i].type == E820_RAM) + map[i].size -= (map[i].size + map[i].addr) % PAGE_SIZE; + + end = map[i].addr + map[i].size; if (map[i].type == E820_RAM && end > mem_end) { /* RAM off the end - may be partially included */ u64 delta = min(map[i].size, end - mem_end); @@ -350,6 +355,7 @@ void __init xen_arch_setup(void) boot_cpu_data.hlt_works_ok = 1; #endif pm_idle = default_idle; + boot_option_idle_override = IDLE_HALT; fiddle_vdso(); } |