On Tue, Aug 13, 2013 at 10:58 AM, Roy Franz <roy.franz@xxxxxxxxxx> wrote: > On Fri, Aug 9, 2013 at 4:26 PM, Roy Franz <roy.franz@xxxxxxxxxx> wrote: >> >> This patch series adds EFI stub support for the ARM architecture. >> Some code that was previously only used by x86/x86_64 is now shared >> and has been made more general. The stub for ARM is implemented in >> a similar manner to x86 in that it is a shim layer between EFI and >> the normal zImage/bzImage boot process, and that an image with the >> stub configured is bootable as both a zImage and EFI application. >> >> This patch now (new for v3) series depends on the >> "arm: Add [U]EFI runtime services support" patches by leif.lindholm@xxxxxxxxxx. >> The Kconfig option now depends on the "CONFIG_EFI" option that his series >> adds, and this option will ensure a little endian configuration. Also, the >> EFI support is used to handle the EFI memory map the stub passes to the kernel. >> There are some minor changes to be coordinated with the EFI runtime services >> patch series, so I have put this back to RFC status. These changes should be >> minor and relate to final device tree bindings. >> >> Changes since v2: >> * EFI bugfix "correct call to free_pages" that patch series >> depends on now in mainline >> * remove "-fno-stack-protector" from decompressor Makefile. The current code doesn't >> trigger the stack protection, so the decompressor now compiles with it still >> on. Note that there has never been any stack protection in the decompressor >> since the stack usage doesn't trigger the heuristic in GCC, so right now >> the "-fno-stack-protector" is a noop. >> * Changed EFI command line handling to not have a fixed limit. >> * Change FDT memory allocation to retry with a larger allocation if >> first educated guess is inadequate. >> * Correctly set 'SizeOfCode' in PE/COFF header. >> * Reviewed ".setup" section that is in x86 PE/COFF header. This is used for x86 >> to account for code that is not in the .text section. We don't need this >> for ARM, as all of our code is in the .text section, or in the PE/COFF header >> itself. >> * Moved EFI_STUB_ERROR #define to header file to share between stub C and ASM. >> * Variety of cleanups and fixes in head.S. >> * Changed update_fdt_and_exit_boot() to just update the device tree, and >> renamed appropriately. Memory allocations moved out of this function as >> well, which enables the retries if the initial FDT size is too small. >> Note that in order to do the retried allocations, the original FDT and >> command line memory regions are left allocated. This is OK since the kernel >> has the memory map and will free these allocations along with the initrd >> and new fdt allocations. >> * Added prefix to all prints, reduced number of prints, and reviewed all >> messages. >> * Change mixed usage of dtb/fdt to all be fdt or "device tree" in efi-stub.c >> * remove unnecessary zimage_size variable from relocate_kernel() >> * correct return types on EFI functions - should be efi_status_t, not int. >> >> >> >> Changes since V1: >> * Updated head.S based on feedback from Dave Martin. ARM/THUMB >> switches now much cleaner. >> * Broke up changes to x86 and common code into more patches. >> 10 more patches in this series. >> >> Roy Franz (16): >> Move common EFI stub code from x86 arch code to common location >> Add system pointer argument to shared EFI stub related functions >> so they no longer use global system table pointer as they did >> when part of eboot.c. This code is now shared, so using a >> global variable as part of the interface is not that nice. >> Also, by avoiding any global variables in the ARM EFI stub, >> this allows the code to be position independent without >> requiring GOT fixups. >> Rename memory allocation/free functions >> Add minimum address parameter to efi_low_alloc() >> rename __get_map() to efi_get_memory_map(), add parameter to >> optionally return mmap key. The mmap key is required to exit >> EFI boot services, and allows efi_get_memory_map() to be used >> for getting final memory map. >> Enforce minimum alignment of 1 page on allocations. The >> efi_high_alloc() and efi_low_alloc() functions use the >> EFI_ALLOCATE_ADDRESS option to the EFI function >> allocate_pages(), which requires a minimum of page alignment, >> and rejects all other requests. >> Allow efi_free() to be called with size of 0, and do nothing in that >> case. >> Generalize handle_ramdisks() and rename to handle_cmdline_files(). >> Renames in handle_cmdline_files() to complete generalization. >> Move EFI_READ_CHUNK_SIZE define to shared location. >> Add proper definitions for some EFI function pointers. >> Fix types in EFI calls to match EFI function definitions. >> resolve warnings found on ARM compile >> Add strstr to compressed string.c for ARM. >> Add EFI stub for ARM >> Add config EFI_STUB for ARM to Kconfig >> >> arch/arm/Kconfig | 11 + >> arch/arm/boot/compressed/Makefile | 15 +- >> arch/arm/boot/compressed/efi-header.S | 111 +++++++ >> arch/arm/boot/compressed/efi-stub.c | 448 ++++++++++++++++++++++++++++ >> arch/arm/boot/compressed/efi-stub.h | 5 + >> arch/arm/boot/compressed/head.S | 90 +++++- >> arch/arm/boot/compressed/string.c | 21 ++ >> arch/x86/boot/compressed/eboot.c | 490 ++----------------------------- >> arch/x86/boot/compressed/eboot.h | 9 - >> drivers/firmware/efi/efi-stub-helper.c | 505 ++++++++++++++++++++++++++++++++ >> include/linux/efi.h | 51 +++- >> 11 files changed, 1263 insertions(+), 493 deletions(-) >> create mode 100644 arch/arm/boot/compressed/efi-header.S >> create mode 100644 arch/arm/boot/compressed/efi-stub.c >> create mode 100644 arch/arm/boot/compressed/efi-stub.h >> create mode 100644 drivers/firmware/efi/efi-stub-helper.c >> >> -- >> 1.7.10.4 >> > > Hi Matt, > > Do you have any more feedback on the X86 and common code (patches > 1-13) that needs to be addressed? Mark Salter has a working ARM64 EFI > stub implemented based on these patches, so the common code has now > been tested with another architecture, and he has acked these patches. > If the current patches are OK, can this be queued for 3.12? (and into > linux-next, if appropriate) > The ARM portion may take a little longer based on the EFI runtime > services patch dependencies, but getting the common code merged would > allow the ARM64 EFI stub work to go forward independently. > > I can resend patches 1-13 as a new series of x86/common only changes > if you would like. > > Thanks, > Roy Hi Matt, Any thoughts on taking the x86/common parts for 3.12? Thanks, Roy -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html