aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-02-10 09:20:56 +0000
committerKeir Fraser <keir.fraser@citrix.com>2010-02-10 09:20:56 +0000
commite9603f14e3ddf91f2838a6798fab3897fe069259 (patch)
treedccb0c684d471cbe263cc8e4f015f00e5375af6e
parent01d99a32129bb60ab0e180c7a64b2bd45cf699c1 (diff)
downloadxen-e9603f14e3ddf91f2838a6798fab3897fe069259.tar.gz
xen-e9603f14e3ddf91f2838a6798fab3897fe069259.tar.bz2
xen-e9603f14e3ddf91f2838a6798fab3897fe069259.zip
x86: move trampoline location
A partner of ours is reporting boot failures (Xen not even emitting a single message) over iSCSI on new (UEFI based) systems. After pointing at their BIOS initially I finally remembered to take a look at the memory map a native kernel booted this way see - and voila, the BIOS reports memory starting at 0x8d000 as reserved. Xen, however, places about 12k of (trampoline) data at 0x8c000. For now, move the trampolien down by 4kB to 0x88000. Later we may choose the location dynamically based on E820 information, if this proves to be an ongoing problem. One thing this patch enforces in any case is a single point of definition for the hard coded location, so that at least adjusting it won't require more than a single line change in the future. Signed-off-by: Jan Beulich <jbeulich@novell.com>
-rw-r--r--xen/arch/x86/boot/Makefile6
-rw-r--r--xen/arch/x86/boot/build32.mk4
-rw-r--r--xen/include/asm-x86/config.h2
3 files changed, 8 insertions, 4 deletions
diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index d9a7c3f963..90856f918e 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -2,6 +2,8 @@ obj-y += head.o
head.o: reloc.S
-# NB. BOOT_TRAMPOLINE == 0x8c000
+BOOT_TRAMPOLINE := $(shell sed -n 's,^\#define[[:space:]]\+BOOT_TRAMPOLINE[[:space:]]\+,,p' $(BASEDIR)/include/asm-x86/config.h)
%.S: %.c
- RELOC=0x8c000 $(MAKE) -f build32.mk $@
+ RELOC=$(BOOT_TRAMPOLINE) $(MAKE) -f build32.mk $@
+
+reloc.S: $(BASEDIR)/include/asm-x86/config.h
diff --git a/xen/arch/x86/boot/build32.mk b/xen/arch/x86/boot/build32.mk
index a570d42524..01f7480b52 100644
--- a/xen/arch/x86/boot/build32.mk
+++ b/xen/arch/x86/boot/build32.mk
@@ -19,7 +19,9 @@ CFLAGS += -Werror -fno-builtin -msoft-float
$(OBJCOPY) -O binary $< $@
%.lnk: %.o
- $(LD) $(LDFLAGS_DIRECT) -N -Ttext 0x8c000 -o $@ $<
+ $(LD) $(LDFLAGS_DIRECT) -N -Ttext $(RELOC) -o $@ $<
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
+
+reloc.o: $(BASEDIR)/include/asm-x86/config.h
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 8c9b3c1d9e..76539359c5 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -94,7 +94,7 @@
/* Primary stack is restricted to 8kB by guard pages. */
#define PRIMARY_STACK_SIZE 8192
-#define BOOT_TRAMPOLINE 0x8c000
+#define BOOT_TRAMPOLINE 0x88000
#define bootsym_phys(sym) \
(((unsigned long)&(sym)-(unsigned long)&trampoline_start)+BOOT_TRAMPOLINE)
#define bootsym(sym) \