From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [PATCH V5 02/15] Move x86 specific funtions/variables to arch header Date: Tue, 23 Sep 2014 13:24:13 +0100 Message-ID: <5421828D0200007800037982@mail.emea.novell.com> References: <1411080607-32365-1-git-send-email-roy.franz@linaro.org> <1411080607-32365-3-git-send-email-roy.franz@linaro.org> <542038090200007800036F13@mail.emea.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Roy Franz Cc: keir , Ian Campbell , tim , xen-devel , Stefano Stabellini , Fu Wei List-Id: xen-devel@lists.xenproject.org >>> On 23.09.14 at 04:08, wrote: > On Mon, Sep 22, 2014 at 5:54 AM, Jan Beulich wrote: >>>>> On 19.09.14 at 00:49, wrote: >>> --- /dev/null >>> +++ b/xen/include/asm-x86/efi-boot.h >>> @@ -0,0 +1,135 @@ >>> +/* >>> + * Architecture specific implementation for EFI boot code. This file >>> + * is intended to be included by XXX _only_, and therefore can define >>> + * arch specific global variables. >>> + */ >>> +#include >>> +#include >>> +#define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with EFI) */ >>> +#include >>> +#undef __ASSEMBLY__ >>> +#include >>> +#include >>> + >>> +static struct file __initdata ucode; >>> +static multiboot_info_t __initdata mbi = { >>> + .flags = MBI_MODULES | MBI_LOADERNAME >>> +}; >>> +static module_t __initdata mb_modules[3]; >>> + >>> +extern char start[]; >>> +extern u32 cpuid_ext_features; >> >> I don't think these (and other extern-s) are valid to be put here. > > Why not, and where should they go?? > > cpuid_ext_features is x86 architecture specific, and start[] is only > used by the x86 code by the place_string() allocator. The extern > declaration is in the file in which the variables are referenced. I'm sorry, I only now realized they're both currently being declared in boot.c, so moving them here is kind of okay. Nevertheless it would seem better to find them a more appropriate home: start[] could likely go alongside _start[] in xen/kernel.h, and cpuid_ext_features would seem to fit into either asm-x86/cpufeature.h or asm-x86/processor.h. > extern l4_pgentry_t *efi_l4_pgtable; > maybe should be moved back to boot.c for now, but this is an x86 > specific structure that is only referenced there due to the > runtime code being #ifdef'ed out. It's currently being declared in xen/arch/x86/efi/efi.h, and I can't really see why this isn't sufficient. Speaking of which - putting the new header under asm-x86/ instead of in x86/efi/ seems bogus with the changed symlinking model too. The header should be as private as possible. Perhaps what you put there could even go into said efi.h (possibly inside a suitable #if)? Jan