xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
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

  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).