|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH 3/3] libelf: PVH: only allow elf_paddr_offset of 0
Modern Linux and FreeBSD hardcode it to 0. Just drop its use for PVH.
Signed-off-by: Jason Andryuk <jandryuk@xxxxxxxxx>
---
xen/arch/x86/hvm/dom0_build.c | 2 +-
xen/common/libelf/libelf-dominfo.c | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 552448ce5d..335321ed3e 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -574,7 +574,7 @@ static int __init pvh_load_kernel(struct domain *d, const
module_t *image,
}
/* Copy the OS image and free temporary buffer. */
- elf.dest_base = (void *)parms.phys_kstart - parms.elf_paddr_offset;
+ elf.dest_base = (void *)parms.phys_kstart;
elf.dest_size = parms.phys_kend - parms.phys_kstart;
elf_set_vcpu(&elf, v);
diff --git a/xen/common/libelf/libelf-dominfo.c
b/xen/common/libelf/libelf-dominfo.c
index 13eb39ec52..12feb8755e 100644
--- a/xen/common/libelf/libelf-dominfo.c
+++ b/xen/common/libelf/libelf-dominfo.c
@@ -433,6 +433,12 @@ static elf_errorstatus elf_xen_addr_calc_check_pvh(struct
elf_binary *elf,
parms->phys_kend = elf->bsd_symtab_pend;
}
+ if ( parms->elf_paddr_offset != 0 ) {
+ elf_err(elf, "ERROR: ELF elf_paddr_offset (0x" PRIx64 ") is
non-zero\n",
+ parms->elf_paddr_offset);
+ return -1;
+ }
+
elf_msg(elf, "ELF: addresses:\n");
elf_msg(elf, " phys_kstart = 0x%" PRIx64 "\n", parms->phys_kstart);
elf_msg(elf, " phys_kend = 0x%" PRIx64 "\n", parms->phys_kend);
--
2.31.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |