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

[Xen-devel] [PATCH v2 1/2] x86: decouple xen alignment setting from EFI/ELF build



Introduce a new Kconfig option to pick the alignment for xen binary.
To retain original behaviour, the default pick for EFI build is 2M and
ELF build 4K.

Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
 xen/arch/x86/Kconfig   | 23 +++++++++++++++++++++++
 xen/arch/x86/xen.lds.S | 12 ++++++++++--
 2 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 5c2d1070b6..1f115c1e40 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -138,6 +138,29 @@ config TBOOT
 
          If unsure, say Y.
 
+choice
+       prompt "Alignment of Xen image"
+       depends on X86
+       default XEN_ALIGN_DEFAULT
+       ---help---
+         Specify alignment for Xen image.
+
+         If unsure, choose "default".
+
+config XEN_ALIGN_DEFAULT
+       bool "Default alignment"
+       ---help---
+         Pick alignment according to build variants.
+
+         For EFI build the default alignment is 2M. For ELF build
+         the default alignment is 4K due to syslinux failing to handle
+         the increment of image size induced by 2M alignment.
+
+config XEN_ALIGN_2M
+       bool "2M alignment"
+
+endchoice
+
 config XEN_GUEST
        def_bool n
        prompt "Xen Guest"
diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
index 6e9bda5109..5a0c1004f5 100644
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -12,7 +12,6 @@
 #define FORMAT "pei-x86-64"
 #undef __XEN_VIRT_START
 #define __XEN_VIRT_START __image_base__
-#define SECTION_ALIGN MB(2)
 #define DECL_SECTION(x) x :
 
 ENTRY(efi_start)
@@ -20,13 +19,22 @@ ENTRY(efi_start)
 #else /* !EFI */
 
 #define FORMAT "elf64-x86-64"
-#define SECTION_ALIGN PAGE_SIZE
 #define DECL_SECTION(x) x : AT(ADDR(x) - __XEN_VIRT_START)
 
 ENTRY(start_pa)
 
 #endif /* EFI */
 
+#ifdef CONFIG_XEN_ALIGN_2M
+#define SECTION_ALIGN MB(2)
+#else /* Default alignment */
+#ifdef EFI
+#define SECTION_ALIGN MB(2)
+#else
+#define SECTION_ALIGN PAGE_SIZE
+#endif
+#endif
+
 OUTPUT_FORMAT(FORMAT, FORMAT, FORMAT)
 
 OUTPUT_ARCH(i386:x86-64)
-- 
2.20.1


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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