[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH for-4.5 V9] Add ARM EFI boot support



On Tue, Sep 30, 2014 at 1:25 AM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
> On Mon, 2014-09-29 at 09:47 +0100, Jan Beulich wrote:
>> >>> On 27.09.14 at 00:25, <roy.franz@xxxxxxxxxx> wrote:
>> > This patch adds EFI boot support for ARM based on the previous refactoring 
>> > of
>> > the x86 EFI boot code.  All ARM specific code is in the ARM efi-boot.h 
>> > header
>> > file, with the main EFI entry point common/efi/boot.c.  The PE/COFF header
>> > is
>> > open-coded in head.S, which allows us to have a single binary be both an 
>> > EFI
>> > executable and a normal arm64 IMAGE file. There is currently no PE/COFF
>> > toolchain support for arm64, so it is not possible to create the PE/COFF
>> > header
>> > in the same manner as on x86.  This also simplifies the build as compared 
>> > to
>> > x86, as we always build the same executable, whereas x86 builds 2.  An ARM
>> > version of efi-bind.h is added, which is based on the x86_64 version with 
>> > the
>> > x86 specific portions removed.  The Makefile in common/efi is different for
>> > x86
>> > and ARM, as for ARM we always build in EFI support.
>> > NR_MEM_BANKS is increased, as memory regions are now added from the UEFI
>> > memory map,
>> > rather than memory banks from a DTB.  The UEFI memory map may be fragmented
>> > so a larger
>> > number of regions will be used.
>> >
>> > Signed-off-by: Roy Franz <roy.franz@xxxxxxxxxx>
>>
>> For the non-ARM parts:
>> Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
>
> Konrad, we would really like to get this into 4.5. It will allow Xen to
> boot on EFI hardware which is already starting to appear in the field.
> It also unblocks other work such as the upstreaming of the Xen on ARM
> boot protocol work which Linaro are doing on grub.
>
> All of the precursor refactoring is already in so the impact of this
> change on x86 is minimal. On the ARM side the changes to the
> common/non-EFI boot path are using well-worn techniques from the Linux
> equivalent so I think we can be reasonably confident of them, the
> remaining code is self contained and can't regress anything else.
>
>>
>> Two minor comments nevertheless:
>>
>> > --- a/xen/common/efi/boot.c
>> > +++ b/xen/common/efi/boot.c
>> > @@ -2,6 +2,7 @@
>> >  #include <efi/efiprot.h>
>> >  #include <efi/efipciio.h>
>> >  #include <public/xen.h>
>> > +#include <xen/bitops.h>
>> >  #include <xen/compile.h>
>> >  #include <xen/ctype.h>
>> >  #include <xen/dmi.h>
>> > @@ -18,9 +19,16 @@
>> >  #include <xen/string.h>
>> >  #include <xen/stringify.h>
>> >  #include <xen/vga.h>
>> > +#ifdef CONFIG_X86
>>
>> The context above shows xen/vga.h - this surely isn't needed in the
>> common code anymore?
>
> Seems likely it isn't. Shall I fixup on commit (I always build test on
> commit, so if it breaks I will certainly catch it) or shall we fix in a
> followup?

It's not needed in boot.c, but is in x86/efi/efi-boot.h.  It should have been
moved along with the vga code.  The following moves it from
boot.c to x86/efi/efi-boot.h.

Ian - can you apply this fixup when you take the patch?


diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index b44746f..82bb74a 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -7,6 +7,7 @@
 #include <asm/edd.h>
 #include <asm/msr.h>
 #include <asm/processor.h>
+#include <xen/vga.h>

 static struct file __initdata ucode;
 static multiboot_info_t __initdata mbi = {
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index e1b243c..f272171 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -18,7 +18,6 @@
 #endif
 #include <xen/string.h>
 #include <xen/stringify.h>
-#include <xen/vga.h>
 #ifdef CONFIG_X86
 /*
  * Keep this arch-specific modified include in the common file, as moving


>
>> > --- /dev/null
>> > +++ b/xen/include/asm-arm/arm64/efibind.h
>> > @@ -0,0 +1,216 @@
>> > +/*++
>> > +
>> > +Copyright (c) 1998  Intel Corporation
>> > +
>> > +Module Name:
>> > +
>> > +    efefind.h
>>
>> Is this so badly misspelled in the original?
>
> Apparently!
>
> $ git grep efefind.h
> xen/include/asm-x86/x86_64/efibind.h:    efefind.h
>
> Shall I fix both cases on commit?
>
> Ian.
>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.