From: Roy Franz <roy.franz@linaro.org>
To: Jan Beulich <JBeulich@suse.com>
Cc: keir <keir@xen.org>, Ian Campbell <ian.campbell@citrix.com>,
tim <tim@xen.org>, xen-devel <xen-devel@lists.xen.org>,
Stefano Stabellini <stefano.stabellini@citrix.com>,
Fu Wei <fu.wei@linaro.org>
Subject: Re: [PATCH V4 02/15] Move x86 specific funtions/variables to arch header
Date: Fri, 12 Sep 2014 09:52:31 -0700 [thread overview]
Message-ID: <CAFECyb88JSTSXbpyaYC8qy2EppsicFFAove48o0vJ2vufYYycw@mail.gmail.com> (raw)
In-Reply-To: <5412B70C02000078000344D2@mail.emea.novell.com>
[-- Attachment #1.1: Type: text/plain, Size: 5066 bytes --]
On Fri, Sep 12, 2014 at 12:04 AM, Jan Beulich <JBeulich@suse.com> wrote:
> >>> On 11.09.14 at 19:33, <roy.franz@linaro.org> wrote:
> > On Thu, Sep 11, 2014 at 7:03 AM, Jan Beulich <JBeulich@suse.com> wrote:
> >>>>> On 10.09.14 at 02:51, <roy.franz@linaro.org> wrote:
> >>> -/* Using SetVirtualAddressMap() is incompatible with kexec: */
> >>> -#undef USE_SET_VIRTUAL_ADDRESS_MAP
> >>
> >> In which way is this arch-specific?
> > The define is only used by the x86 specific code. I can move it back
> > to the common code.
>
> Yes please, as the conflict with kexec is an arch-independent one.
>
> >>> -static void __init place_string(u32 *addr, const char *s)
> >>> -{
> >>> - static char *__initdata alloc = start;
> >>> -
> >>> - if ( s && *s )
> >>> - {
> >>> - size_t len1 = strlen(s) + 1;
> >>> - const char *old = (char *)(long)*addr;
> >>> - size_t len2 = *addr ? strlen(old) + 1 : 0;
> >>> -
> >>> - alloc -= len1 + len2;
> >>> - /*
> >>> - * Insert new string before already existing one. This is
> needed
> >>> - * for options passed on the command line to override options
> from
> >>> - * the configuration file.
> >>> - */
> >>> - memcpy(alloc, s, len1);
> >>> - if ( *addr )
> >>> - {
> >>> - alloc[len1 - 1] = ' ';
> >>> - memcpy(alloc + len1, old, len2);
> >>> - }
> >>> - }
> >>> - *addr = (long)alloc;
> >>> -}
> >>
> >> How much of this is really arch-specific?
> >
> > This is only used by the x86 code, and this is the x86 specific memory
> > management that uses
> > memory allocated by the linker script before start. The ARM boot code
> > does not use this.
>
> I.e. the only arch-specific thing here is the initializer of "alloc". Or
> are you saying that you don't need a place_string() function in
> ARM at all? Is that because to stuff respective information into DT?
>
ARM doesn't use place_string() at all. All the information is placed into
the DT that has EFI allocated memory for it.
>
> >>> -static void __init setup_efi_pci(void)
> >>
> >> And this doesn't seem arch-specific either (it only depends on
> >> HAS_PCI or some such).
> >
> > This does scanning of PCI ROMS, which is unlikely to do anything
> > useful on ARM platforms.
>
> Why not? Obviously if the ROMs contain x86 code, they're useless,
> but in order to, say, do remote boot I suppose you need option
> ROMs (with ARM code) on ARM too.
>
Yes, something like that may exist someday. This can get moved back
with the #ifdef'ing of the runtime.c implementation.
>
> > I also have no way to test this on ARM.
> > I can try to pull this back in, but I may run into dependency issues
> > such as those with VGA, where I did not
> > want to pull in otherwise unused (and likely unusable on ARM)
> > drivers/subsystems in order to keep a little more
> > code in the common EFI boot path.
>
> The base line should be too keep everything here that is potentially
> usable on more than one arch (without limiting our thinking to ARM
> and x86). EFI's protocol based approach abstracts this quite nicely
> - if something isn't available, you simply won't find th respective
> protocol.
>
I'll take a look at just factoring out the VGA specific stuff - I agree that
is all that needs to be in the x86 specific file.
>
> >>> --- /dev/null
> >>> +++ b/xen/include/asm-x86/efi-boot.h
> >>> @@ -0,0 +1,451 @@
> >>> +/*
> >>> + * 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 <asm/e820.h>
> >>> +#include <asm/edd.h>
> >>> +#define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with
> EFI) */
> >>> +#include <asm/fixmap.h>
> >>> +#undef __ASSEMBLY__
> >>> +#include <asm/msr.h>
> >>> +#include <asm/processor.h>
> >>> +
> >>> +static struct file __initdata ucode;
> >>> +static multiboot_info_t __initdata mbi = {
> >>> + .flags = MBI_MODULES | MBI_LOADERNAME
> >>> +};
> >>> +static module_t __initdata mb_modules[3];
> >>> +
> >>> +static void noreturn blexit(const CHAR16 *str);
> >>> +static void PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode);
> >>
> >> What are these two doing here?
> >
> > These are forward declarations. I don't think that I can order
> > everything so that I don't need any forward declarations
> > anywhere.
>
> I realize you may need forward declarations. But you declare arch-
> independent functions in an arch header here.
>
> >>> +void __init efi_init_memory(void)
> >>
> >> Now that I look at it again, I think a good part of this is arch-
> >> independent too.
> > By "this" you mean the code in efi_init_memory?
>
> Yes, at least everything up to and including the
> SetVirtualAddressMap() call.
>
This is only called from x86/mm.c, so it is currently unused on ARM.
If it causes compile problems on ARM I can #ifdef it, since this will need
to be dealt with as part
of adding runtime service support.
>
> Jan
>
[-- Attachment #1.2: Type: text/html, Size: 7521 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2014-09-12 16:52 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-10 0:51 [PATCH V4 00/15] arm64 EFI stub Roy Franz
2014-09-10 0:51 ` [PATCH V4 01/15] move x86 EFI boot code to common/efi Roy Franz
2014-09-11 13:50 ` Jan Beulich
2014-09-11 17:16 ` Roy Franz
2014-09-12 6:55 ` Jan Beulich
2014-09-10 0:51 ` [PATCH V4 02/15] Move x86 specific funtions/variables to arch header Roy Franz
2014-09-11 14:03 ` Jan Beulich
2014-09-11 17:33 ` Roy Franz
2014-09-12 7:04 ` Jan Beulich
2014-09-12 9:43 ` Ian Campbell
2014-09-12 9:53 ` Jan Beulich
2014-09-12 9:58 ` Ian Campbell
2014-09-12 16:52 ` Roy Franz [this message]
2014-09-10 0:51 ` [PATCH V4 03/15] create arch functions to get and process EFI memory map Roy Franz
2014-09-11 14:11 ` Jan Beulich
2014-09-11 17:40 ` Roy Franz
2014-09-12 7:07 ` Jan Beulich
2014-09-12 9:45 ` Ian Campbell
2014-09-12 9:56 ` Jan Beulich
2014-09-12 10:23 ` Ian Campbell
2014-09-12 10:35 ` Jan Beulich
2014-09-12 17:01 ` Roy Franz
2014-09-10 0:51 ` [PATCH V4 04/15] Add architecture functions for pre/post ExitBootServices Roy Franz
2014-09-11 14:13 ` Jan Beulich
2014-09-11 17:44 ` Roy Franz
2014-09-12 7:08 ` Jan Beulich
2014-09-12 9:46 ` Ian Campbell
2014-09-12 9:58 ` Jan Beulich
2014-09-12 16:57 ` Roy Franz
2014-09-15 8:47 ` Jan Beulich
2014-09-10 0:51 ` [PATCH V4 05/15] Add efi_arch_cfg_file() to handle arch specific cfg file fields Roy Franz
2014-09-11 14:16 ` Jan Beulich
2014-09-11 18:11 ` Roy Franz
2014-09-12 7:10 ` Jan Beulich
2014-09-10 0:51 ` [PATCH V4 06/15] Add efi_arch_handle_cmdline() for processing commandline Roy Franz
2014-09-11 14:22 ` Jan Beulich
2014-09-11 18:24 ` Roy Franz
2014-09-10 0:51 ` [PATCH V4 07/15] Move x86 specific video and disk probing code Roy Franz
2014-09-11 14:26 ` Jan Beulich
2014-09-11 18:30 ` Roy Franz
2014-09-12 7:12 ` Jan Beulich
2014-09-10 0:51 ` [PATCH V4 08/15] Add efi_arch_memory() for arch specific memory setup Roy Franz
2014-09-11 14:27 ` Jan Beulich
2014-09-10 0:51 ` [PATCH V4 09/15] Add arch specific module handling to read_file() Roy Franz
2014-09-11 14:40 ` Jan Beulich
2014-09-10 0:52 ` [PATCH V4 10/15] Add SMBIOS and runtime services setup arch functions Roy Franz
2014-09-11 14:44 ` Jan Beulich
2014-09-11 22:03 ` Roy Franz
2014-09-11 23:41 ` Stefano Stabellini
2014-09-12 7:14 ` Jan Beulich
2014-09-12 16:24 ` Roy Franz
2014-09-10 0:52 ` [PATCH V4 11/15] Add several misc. arch functions for EFI boot code Roy Franz
2014-09-11 14:45 ` Jan Beulich
2014-09-10 0:52 ` [PATCH V4 12/15] Add efi_arch_use_config_file() function to control use of config file Roy Franz
2014-09-11 14:49 ` Jan Beulich
2014-09-11 23:54 ` Stefano Stabellini
2014-09-12 7:15 ` Jan Beulich
2014-09-12 16:30 ` Roy Franz
2014-09-10 0:52 ` [PATCH V4 13/15] add arm64 cache flushing code from linux v3.16 Roy Franz
2014-09-10 0:52 ` [PATCH V4 14/15] Update libfdt to v1.4.0 Roy Franz
2014-09-10 0:52 ` [PATCH V4 15/15] Add ARM EFI boot support Roy Franz
2014-09-11 14:53 ` Jan Beulich
2014-09-11 22:26 ` Roy Franz
2014-09-12 7:17 ` Jan Beulich
2014-09-12 0:49 ` Stefano Stabellini
2014-09-12 3:21 ` Roy Franz
2014-09-12 17:41 ` Stefano Stabellini
2014-09-12 17:50 ` Roy Franz
2014-09-12 17:55 ` Stefano Stabellini
2014-09-22 11:13 ` Ian Campbell
2014-09-23 12:39 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAFECyb88JSTSXbpyaYC8qy2EppsicFFAove48o0vJ2vufYYycw@mail.gmail.com \
--to=roy.franz@linaro.org \
--cc=JBeulich@suse.com \
--cc=fu.wei@linaro.org \
--cc=ian.campbell@citrix.com \
--cc=keir@xen.org \
--cc=stefano.stabellini@citrix.com \
--cc=tim@xen.org \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).