On Thu, Apr 18, 2013 at 05:29:33PM +0100, David Vrabel wrote: > On 17/04/13 13:51, Daniel Kiper wrote: > > On Tue, Apr 16, 2013 at 06:13:07PM +0100, David Vrabel wrote: > >> > >> } > >> > >> + code_page = __map_domain_page(image->control_code_page); > >> + memcpy(code_page, kexec_reloc, PAGE_SIZE); > > > > memcpy(code_page, kexec_reloc, kexec_reloc_size); > > kexec_reloc_size is absolute symbol and doing this give linker errors. Yes, it should be changed to something like that: kexec_reloc_size: .long . - xen_relocate_kernel Somwhere in xen/include/asm-x86/machine_kexec.h: extern unsigned int kexec_reloc_size; > FWIW, Linux also uses a #define'd value for its similar memcpy. I saw that sometime ago and I think this is a bug. We should copy only kexec_reloc() code and nothing else. Otherwise we ask for problems. I am going to post relevant patches for this and others kexec issues found in Linux Kernel. > I have added a link time check that kexec_reloc_size <= PAGE_SIZE. Good idea but it should be kexec_reloc_size <= KEXEC_CONTROL_PAGE_SIZE. Daniel