--- a/arch/x86/xen/setup.c 2011-01-05 00:50:19.000000000 +0000 +++ b/arch/x86/xen/setup.c 2011-01-24 20:29:23.000000000 +0000 @@ -179,7 +179,10 @@ 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; + if (map[i].type == E820_RAM) + map[i].size &= ~(PAGE_SIZE-1); + end = map[i].addr + map[i].size; if (map[i].type == E820_RAM && end > mem_end) { /* RAM off the end - may be partially included */