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

[xen master] xen/arm: make ARM_EFI selectable for Arm64



commit 12314be5749ecbb338d42ad10df059def6fc259a
Author:     Wei Chen <wei.chen@xxxxxxx>
AuthorDate: Mon Jun 26 11:33:53 2023 +0800
Commit:     Julien Grall <jgrall@xxxxxxxxxx>
CommitDate: Tue Jul 4 20:16:58 2023 +0100

    xen/arm: make ARM_EFI selectable for Arm64
    
    Currently, ARM_EFI will mandatorily selected by Arm64.
    Even if the user knows for sure that their images will not
    start in the EFI environment, they can't disable the EFI
    support for Arm64. This means there will be about 3K lines
    unused code in their images.
    
    So in this patch, we make ARM_EFI selectable for Arm64, and
    based on that, we can use CONFIG_ARM_EFI to gate the EFI
    specific code in head.S for those images that will not be
    booted in EFI environment.
    
    Signed-off-by: Wei Chen <wei.chen@xxxxxxx>
    Signed-off-by: Penny Zheng <penny.zheng@xxxxxxx>
    Reviewed-by: Julien Grall <jgrall@xxxxxxxxxx>
---
 xen/arch/arm/Kconfig      |  9 +++++++--
 xen/arch/arm/arm64/head.S | 15 +++++++++++++--
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 06b5ff755c..c30f324573 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -7,7 +7,6 @@ config ARM_64
        def_bool y
        depends on !ARM_32
        select 64BIT
-       select ARM_EFI
        select HAS_FAST_MULTIPLY
 
 config ARM
@@ -71,7 +70,13 @@ config ACPI
          an alternative to device tree on ARM64.
 
 config ARM_EFI
-       bool
+       bool "UEFI boot service support"
+       depends on ARM_64
+       default y
+       help
+         This option provides support for boot services through
+         UEFI firmware. A UEFI stub is provided to allow Xen to
+         be booted as an EFI application.
 
 config GICV3
        bool "GICv3 driver"
diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index c09d0b3a1a..31cdb54d74 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -22,8 +22,11 @@
 
 #include <asm/page.h>
 #include <asm/early_printk.h>
+
+#ifdef CONFIG_ARM_EFI
 #include <efi/efierr.h>
 #include <asm/arm64/efibind.h>
+#endif
 
 #define PT_PT     0xf7f /* nG=1 AF=1 SH=11 AP=01 NS=1 ATTR=111 T=1 P=1 */
 #define PT_MEM    0xf7d /* nG=1 AF=1 SH=11 AP=01 NS=1 ATTR=111 T=0 P=1 */
@@ -171,8 +174,10 @@ efi_head:
         .byte   0x52
         .byte   0x4d
         .byte   0x64
-        .long   pe_header - efi_head        /* Offset to the PE header. */
-
+#ifndef CONFIG_ARM_EFI
+        .long   0                    /* 0 means no PE header. */
+#else
+        .long   pe_header - efi_head /* Offset to the PE header. */
         /*
          * Add the PE/COFF header to the file.  The address of this header
          * is at offset 0x3c in the file, and is part of Linux "Image"
@@ -278,6 +283,8 @@ section_table:
         .short  0                /* NumberOfLineNumbers  (0 for executables) */
         .long   0xe0500020       /* Characteristics (section flags) */
         .align  5
+#endif /* CONFIG_ARM_EFI */
+
 real_start:
         /* BSS should be zeroed when booting without EFI */
         mov   x26, #0                /* x26 := skip_zero_bss */
@@ -965,6 +972,8 @@ putn:   ret
 ENTRY(lookup_processor_type)
         mov  x0, #0
         ret
+
+#ifdef CONFIG_ARM_EFI
 /*
  *  Function to transition from EFI loader in C, to Xen entry point.
  *  void noreturn efi_xen_start(void *fdt_ptr, uint32_t fdt_size);
@@ -1023,6 +1032,8 @@ ENTRY(efi_xen_start)
         b     real_start_efi
 ENDPROC(efi_xen_start)
 
+#endif /* CONFIG_ARM_EFI */
+
 /*
  * Local variables:
  * mode: ASM
--
generated by git-patchbot for /home/xen/git/xen.git#master



 


Rackspace

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