Message ID | 20230626033443.2943270-3-Penny.Zheng@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | xen/arm: Add Armv8-R64 MPU support to Xen - Part#1 | expand |
On 26/06/2023 04:33, Penny Zheng wrote: > From: Wei Chen <wei.chen@arm.com> > > Currently, ARM_EFI will mandatorily selected by Arm64. I think there is a missing 'be' after 'mandatorily'. > 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@arm.com> > Signed-off-by: Penny Zheng <penny.zheng@arm.com> Reviewed-by: Julien Grall <jgrall@amazon.com> Cheers,
On 26/06/2023 4:33 am, Penny Zheng wrote: > From: Wei Chen <wei.chen@arm.com> > > 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@arm.com> > Signed-off-by: Penny Zheng <penny.zheng@arm.com> Randconfig has found a bug: https://gitlab.com/xen-project/people/andyhhp/xen/-/jobs/4595568303 ld: prelink.o: in function `acpi_os_get_root_pointer': /builds/xen-project/people/andyhhp/xen/xen/drivers/acpi/osl.c:73: undefined reference to `efi' /builds/xen-project/people/andyhhp/xen/xen/drivers/acpi/osl.c:73:(.init.text+0x8ac0): relocation truncated to fit: R_AARCH64_ADR_PREL_PG_HI21 against undefined symbol `efi' ~Andrew
Hi, On 05/07/2023 12:20, Andrew Cooper wrote: > On 26/06/2023 4:33 am, Penny Zheng wrote: >> From: Wei Chen <wei.chen@arm.com> >> >> 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@arm.com> >> Signed-off-by: Penny Zheng <penny.zheng@arm.com> > > Randconfig has found a bug: > > https://gitlab.com/xen-project/people/andyhhp/xen/-/jobs/4595568303 > > ld: prelink.o: in function `acpi_os_get_root_pointer': > /builds/xen-project/people/andyhhp/xen/xen/drivers/acpi/osl.c:73: > undefined reference to `efi' > /builds/xen-project/people/andyhhp/xen/xen/drivers/acpi/osl.c:73:(.init.text+0x8ac0): > relocation truncated to fit: R_AARCH64_ADR_PREL_PG_HI21 against > undefined symbol `efi' :/. That's because ACPI depends on UEFI. I will send a patch to update the Kconfig accordingly. Cheers,
On 05/07/2023 12:46, Julien Grall wrote: > Hi, > > On 05/07/2023 12:20, Andrew Cooper wrote: >> On 26/06/2023 4:33 am, Penny Zheng wrote: >>> From: Wei Chen <wei.chen@arm.com> >>> >>> 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@arm.com> >>> Signed-off-by: Penny Zheng <penny.zheng@arm.com> >> >> Randconfig has found a bug: >> >> https://gitlab.com/xen-project/people/andyhhp/xen/-/jobs/4595568303 >> >> ld: prelink.o: in function `acpi_os_get_root_pointer': >> /builds/xen-project/people/andyhhp/xen/xen/drivers/acpi/osl.c:73: >> undefined reference to `efi' >> /builds/xen-project/people/andyhhp/xen/xen/drivers/acpi/osl.c:73:(.init.text+0x8ac0): >> relocation truncated to fit: R_AARCH64_ADR_PREL_PG_HI21 against >> undefined symbol `efi' > > :/. That's because ACPI depends on UEFI. I will send a patch to update > the Kconfig accordingly. Patch sent: https://lore.kernel.org/all/20230705115534.26004-1-julien@xen.org/ Cheers,
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index 61e581b8c2..70fdc2ba63 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 @@ -70,7 +69,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 f37133cf7c..10a07db428 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 */ @@ -172,8 +175,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" @@ -279,6 +284,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 */ @@ -917,6 +924,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); @@ -975,6 +984,8 @@ ENTRY(efi_xen_start) b real_start_efi ENDPROC(efi_xen_start) +#endif /* CONFIG_ARM_EFI */ + /* * Local variables: * mode: ASM