aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Deegan <tim@xen.org>2013-03-08 13:46:22 +0100
committerJan Beulich <jbeulich@suse.com>2013-03-08 13:46:22 +0100
commit7542d222893203037dc2ba431dfb5f723d791891 (patch)
treea7cfd2e6d1402c4eeb604abb8aa48fecbf3b40d6
parent8b5e82064759e5fdc5bd41e8b5a1aca92c6527df (diff)
downloadxen-7542d222893203037dc2ba431dfb5f723d791891.tar.gz
xen-7542d222893203037dc2ba431dfb5f723d791891.tar.bz2
xen-7542d222893203037dc2ba431dfb5f723d791891.zip
x86/setup: don't relocate the VGA hole.
Copying the contents of the VGA hole is at best pointless and at worst dangerous. Booting Xen on Xen, it causes a very long delay as each byte is referred to qemu. Since we were already discarding the first 1MB of the relocated area, just avoid copying it in the first place. Reported-by: Jon Ludlam <jonathan.ludlam@eu.citrix.com> Signed-off-by: Tim Deegan <tim@xen.org> master changeset: 0b76ce20de85ad7c23c47ee3275020859b91d46b master date: 2013-02-14 12:20:58 +0000
-rw-r--r--xen/arch/x86/setup.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 602a92235c..6ab1afc66a 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -813,8 +813,8 @@ void __init __start_xen(unsigned long mbi_p)
l4_pgentry_t *pl4e;
l3_pgentry_t *pl3e;
l2_pgentry_t *pl2e;
+ uint64_t load_start;
int i, j, k;
- void *dst;
/* Select relocation address. */
e = end - reloc_size;
@@ -827,11 +827,9 @@ void __init __start_xen(unsigned long mbi_p)
* with a barrier(). After this we must *not* modify static/global
* data until after we have switched to the relocated pagetables!
*/
+ load_start = (unsigned long)_start - XEN_VIRT_START;
barrier();
- dst = move_memory(e, 0, (unsigned long)&_end - XEN_VIRT_START, 1);
-
- /* Poison low 1MB to detect stray pointers to physical 0-1MB. */
- memset(dst, 0x55, 1U << 20);
+ move_memory(e + load_start, load_start, _end - _start, 1);
/* Walk initial pagetables, relocating page directory entries. */
pl4e = __va(__pa(idle_pg_table));