diff options
author | Tim Deegan <tim@xen.org> | 2013-02-14 12:20:58 +0000 |
---|---|---|
committer | Tim Deegan <tim@xen.org> | 2013-02-14 12:20:58 +0000 |
commit | 0b76ce20de85ad7c23c47ee3275020859b91d46b (patch) | |
tree | 4b630bb5372ba9f875d5ca71f4b991804d47513b /xen/arch/x86/setup.c | |
parent | b5955458b3d1655f1b40cebd28d8735c146987af (diff) | |
download | xen-0b76ce20de85ad7c23c47ee3275020859b91d46b.tar.gz xen-0b76ce20de85ad7c23c47ee3275020859b91d46b.tar.bz2 xen-0b76ce20de85ad7c23c47ee3275020859b91d46b.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>
Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/setup.c')
-rw-r--r-- | xen/arch/x86/setup.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 7437c84db5..83335ad450 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -838,8 +838,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; @@ -852,11 +852,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)); |