From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH V5 02/15] Move x86 specific funtions/variables to arch header Date: Mon, 22 Sep 2014 11:52:12 +0100 Message-ID: <1411383132.18331.22.camel@kazak.uk.xensource.com> References: <1411080607-32365-1-git-send-email-roy.franz@linaro.org> <1411080607-32365-3-git-send-email-roy.franz@linaro.org> <541C0772020000780003672C@mail.emea.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <541C0772020000780003672C@mail.emea.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich Cc: keir@xen.org, tim@xen.org, xen-devel@lists.xen.org, Roy Franz , stefano.stabellini@citrix.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org On Fri, 2014-09-19 at 09:37 +0100, Jan Beulich wrote: > >>> On 19.09.14 at 00:49, wrote: > > @@ -687,82 +645,6 @@ static int __init set_color(u32 mask, int bpp, u8 *pos, u8 *sz) > > return max(*pos + *sz, bpp); > > } > > > > -extern const intpte_t __page_tables_start[], __page_tables_end[]; > > -#define in_page_tables(v) ((intpte_t *)(v) >= __page_tables_start && \ > > - (intpte_t *)(v) < __page_tables_end) > > - > > -#define PE_BASE_RELOC_ABS 0 > > -#define PE_BASE_RELOC_HIGHLOW 3 > > -#define PE_BASE_RELOC_DIR64 10 > > - > > -extern const struct pe_base_relocs { > > - u32 rva; > > - u32 size; > > - u16 entries[]; > > -} __base_relocs_start[], __base_relocs_end[]; > > - > > -static void __init relocate_image(unsigned long delta) > > -{ > > - const struct pe_base_relocs *base_relocs; > > - > > - for ( base_relocs = __base_relocs_start; base_relocs < __base_relocs_end; ) > > - { > > - unsigned int i, n; > > - > > - n = (base_relocs->size - sizeof(*base_relocs)) / > > - sizeof(*base_relocs->entries); > > - for ( i = 0; i < n; ++i ) > > - { > > - unsigned long addr = xen_phys_start + base_relocs->rva + > > - (base_relocs->entries[i] & 0xfff); > > - > > - switch ( base_relocs->entries[i] >> 12 ) > > - { > > - case PE_BASE_RELOC_ABS: > > - break; > > - case PE_BASE_RELOC_HIGHLOW: > > - if ( delta ) > > - { > > - *(u32 *)addr += delta; > > - if ( in_page_tables(addr) ) > > - *(u32 *)addr += xen_phys_start; > > - } > > - break; > > - case PE_BASE_RELOC_DIR64: > > - if ( delta ) > > - { > > - *(u64 *)addr += delta; > > - if ( in_page_tables(addr) ) > > - *(intpte_t *)addr += xen_phys_start; > > - } > > - break; > > - default: > > - blexit(L"Unsupported relocation type"); > > - } > > - } > > - base_relocs = (const void *)(base_relocs->entries + i + (i & 1)); > > - } > > -} > > Hmm, so you're still moving the relocation processing code - why? I > don't recall you having said you're sure you'll not need this on ARM. ARM relocates itself to the top of memory during bringup already. I don't think we need to do it here as well/instead. Ian.