[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH 1/3] libelf: Introduce phys_kstart/end
The physical start and end matter for PVH. These are only used by a PVH dom0, but will help when separating the PV and PVH ELF checking in the next patch. Signed-off-by: Jason Andryuk <jandryuk@xxxxxxxxx> --- xen/arch/x86/hvm/dom0_build.c | 4 ++-- xen/common/libelf/libelf-dominfo.c | 3 +++ xen/include/xen/libelf.h | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c index 878dc1d808..5b9192ecc6 100644 --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -574,8 +574,8 @@ 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.virt_kstart - parms.virt_base); - elf.dest_size = parms.virt_kend - parms.virt_kstart; + elf.dest_base = (void *)parms.phys_kstart - parms.elf_paddr_offset; + elf.dest_size = parms.phys_kend - parms.phys_kstart; elf_set_vcpu(&elf, v); rc = elf_load_binary(&elf); diff --git a/xen/common/libelf/libelf-dominfo.c b/xen/common/libelf/libelf-dominfo.c index 69c94b6f3b..b1f36866eb 100644 --- a/xen/common/libelf/libelf-dominfo.c +++ b/xen/common/libelf/libelf-dominfo.c @@ -453,6 +453,8 @@ static elf_errorstatus elf_xen_addr_calc_check(struct elf_binary *elf, } virt_offset = parms->virt_base - parms->elf_paddr_offset; + parms->phys_kstart = elf->pstart; + parms->phys_kend = elf->pend; parms->virt_kstart = elf->pstart + virt_offset; parms->virt_kend = elf->pend + virt_offset; @@ -464,6 +466,7 @@ static elf_errorstatus elf_xen_addr_calc_check(struct elf_binary *elf, elf_parse_bsdsyms(elf, elf->pend); if ( elf->bsd_symtab_pend ) parms->virt_kend = elf->bsd_symtab_pend + virt_offset; + parms->phys_kend = elf->bsd_symtab_pend; } elf_msg(elf, "ELF: addresses:\n"); diff --git a/xen/include/xen/libelf.h b/xen/include/xen/libelf.h index b73998150f..8d80d0812a 100644 --- a/xen/include/xen/libelf.h +++ b/xen/include/xen/libelf.h @@ -434,6 +434,8 @@ struct elf_dom_parms { /* calculated */ uint64_t virt_kstart; uint64_t virt_kend; + uint64_t phys_kstart; + uint64_t phys_kend; }; static inline void elf_xen_feature_set(int nr, uint32_t * addr) -- 2.31.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |