On 19/08/16 08:52, Jan Beulich wrote: > Page tables get pre-populated with physical addresses which, due to > living inside the Xen image, will never exceed 32 bits in width. That > in turn results in the tool generating the relocations to produce > 32-bit relocations for them instead of the 64-bit ones needed for > relocating virtual addresses. Hence instead of special casing page > tables in the processing of 64-bit relocations, let's be more rigid > and refuse them (as being indicative of something else having gone > wrong in the build process). > > Signed-off-by: Jan Beulich <jbeul...@suse.com>
Is it an ABI requirement to use the minimal available relocation? It is certainly suboptimal to use a 64bit relocation when a 32bit one would do, but I wouldn't bet that it is unconditional avoided by all toolchains. It is currently the case that Xen needs to live below 4GB physical, so from that point of view a 64bit relocation will not be required in the pagetables. ~Andrew > > --- a/xen/arch/x86/efi/efi-boot.h > +++ b/xen/arch/x86/efi/efi-boot.h > @@ -81,12 +81,9 @@ static void __init efi_arch_relocate_ima > } > break; > case PE_BASE_RELOC_DIR64: > - if ( delta ) > - { > - *(u64 *)addr += delta; > - if ( in_page_tables(addr) ) > - *(intpte_t *)addr += xen_phys_start; > - } > + if ( in_page_tables(addr) ) > + blexit(L"Unexpected relocation type"); > + *(u64 *)addr += delta; > break; > default: > blexit(L"Unsupported relocation type"); > > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > https://lists.xen.org/xen-devel
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel