[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v4 0/5] x86/pvh: Support relocating dom0 kernel
Xen tries to load a PVH dom0 kernel at the fixed guest physical address from the elf headers. For Linux, this defaults to 0x1000000 (16MB), but it can be configured. Unfortunately there exist firmwares that have reserved regions at this address, so Xen fails to load the dom0 kernel since it's not RAM. The other issue is that the Linux PVH entry point is not position-independent. It expects to run at the compiled CONFIG_PHYSICAL_ADDRESS. This patch set expands the PVH dom0 builder to try to relocate the kernel if needed and possible. XEN_ELFNOTE_PHYS32_RELOC is added for kernels to indicate they are relocatable and their acceptable address range and alignment. The first patch reverts "xen/x86: bzImage parse kernel_alignment" since the alignment will be specified by the ELF note. The second and third patches move MB/GB() to common-macros.h. The fourth patch expands ELF note printing beyond just printing integers and strings. The fifth patch expands the pvh dom0 kernel placement code. I'll post an additional patch showing the Linux changes to make PVH relocatable. Jason Andryuk (5): Revert "xen/x86: bzImage parse kernel_alignment" tools/init-xenstore-domain: Replace variable MB() usage tools: Move MB/GB() to common-macros.h libelf: Expand ELF note printing x86/PVH: Support relocatable dom0 kernels tools/firmware/hvmloader/util.h | 3 - tools/helpers/init-xenstore-domain.c | 11 ++- tools/include/xen-tools/common-macros.h | 4 + tools/libs/light/libxl_internal.h | 4 - xen/arch/x86/bzimage.c | 4 +- xen/arch/x86/hvm/dom0_build.c | 98 ++++++++++++++++++++++++- xen/arch/x86/include/asm/bzimage.h | 2 +- xen/arch/x86/pv/dom0_build.c | 2 +- xen/common/libelf/libelf-dominfo.c | 97 ++++++++++++++++++------ xen/common/libelf/libelf-private.h | 1 + xen/include/public/elfnote.h | 19 ++++- xen/include/xen/libelf.h | 4 + 12 files changed, 206 insertions(+), 43 deletions(-) -- 2.44.0
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |