On Fri, Aug 16, 2013 at 5:16 PM, Roy Franz <roy.franz@xxxxxxxxxx> wrote: > 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 Hi Matt, Do you have a tree I can monitor to see if you have taken this? Would you like me to split out the x86/common only changes into a separate series from the ARM changes? 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