Change LOAD_OFFSET so that the kernel has virtual addresses in the elf header fields. Unlike bare metal kernels, Xen kernels start with virtual address management turned on and thus the addresses to load to should be virtual addresses. Signed-off-by: Ian Pratt <ian.pratt@xxxxxxxxxxxxx> Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx> Signed-off-by: Chris Wright <chrisw@xxxxxxxxxxxx> --- arch/i386/kernel/vmlinux.lds.S | 2 +- include/asm-i386/mach-default/mach_vmlinux.lds.h | 6 ++++++ include/asm-i386/mach-xen/mach_vmlinux.lds.h | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) --- xen-subarch-2.6.orig/arch/i386/kernel/vmlinux.lds.S +++ xen-subarch-2.6/arch/i386/kernel/vmlinux.lds.S @@ -2,7 +2,7 @@ * Written by Martin Mares <mj@xxxxxxxxxxxxxxxxxxxxxxxx>; */ -#define LOAD_OFFSET __PAGE_OFFSET +#include "mach_vmlinux.lds.h" #include <asm-generic/vmlinux.lds.h> #include <asm/thread_info.h> --- /dev/null +++ xen-subarch-2.6/include/asm-i386/mach-default/mach_vmlinux.lds.h @@ -0,0 +1,6 @@ +#ifndef __ASM_MACH_VMLINUX_LDS_H +#define __ASM_MACH_VMLINUX_LDS_H + +#define LOAD_OFFSET __PAGE_OFFSET + +#endif /* __ASM_MACH_VMLINUX_LDS_H */ --- /dev/null +++ xen-subarch-2.6/include/asm-i386/mach-xen/mach_vmlinux.lds.h @@ -0,0 +1,6 @@ +#ifndef __ASM_MACH_VMLINUX_LDS_H +#define __ASM_MACH_VMLINUX_LDS_H + +#define LOAD_OFFSET 0 + +#endif /* __ASM_MACH_VMLINUX_LDS_H */ --