[RFC][PATCH 00/11] EFI mixed mode

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

 



From: Matt Fleming <matt.fleming@xxxxxxxxx>

This patch series enables booting a 64-bit kernel on 32-bit EFI
firmware. It's marked as RFC because I'm just after some general
feedback on the approach taken.

Note that no boot loader changes should be necessary to take advantage
of these patches.

Tested Qemu + OVMF with Syslinux.

Some things that I'm going to fix up meanwhile are,

 o failure for > 4GB arg ptrs to EFI services should be graceful

 o revisit whether it's OK to mark the identity-mapped kernel
   text as executable.

 o I'm pretty sure these patches break 32-bit boot completely

 o The ARM EFI stub doesn't handle relocations so can't jump through
   global function pointers

The full series is available on the 'mixed-mode' branch here,

  git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git

Matt Fleming (11):
  x86/boot: Cleanup header.S by removing some #ifdefs
  x86, tools: Consolidate #ifdef code
  x86/mm/pageattr: Make __lookup_address_in_pgd() global
  x86/efi: Delete dead code when checking for non-native
  efi: Add separate 32-bit/64-bit definitions
  x86/efi: Build our own EFI services pointer table
  x86/efi: Add early thunk code to go from 64-bit to 32-bit
  x86/efi: Split the boot stub into 32/64 code paths
  x86/efi: Firmware agnostic handover entry points
  x86/efi: Add mixed runtime services support
  x86/efi: Wire up CONFIG_EFI_MIXED

 arch/x86/Kconfig                       |  10 +
 arch/x86/boot/Makefile                 |   2 +-
 arch/x86/boot/compressed/eboot.c       | 669 +++++++++++++++++++++++++++------
 arch/x86/boot/compressed/eboot.h       |  60 +++
 arch/x86/boot/compressed/efi_stub_64.S |  29 ++
 arch/x86/boot/compressed/head_64.S     | 123 +++++-
 arch/x86/boot/header.S                 |  23 +-
 arch/x86/boot/tools/build.c            |  73 ++--
 arch/x86/include/asm/efi.h             |  38 +-
 arch/x86/include/asm/pgtable_types.h   |   2 +
 arch/x86/kernel/setup.c                |   2 +-
 arch/x86/mm/fault.c                    |   7 +-
 arch/x86/mm/pageattr.c                 |  12 +-
 arch/x86/platform/efi/Makefile         |   1 +
 arch/x86/platform/efi/efi.c            | 154 ++++----
 arch/x86/platform/efi/efi_64.c         | 328 +++++++++++++++-
 arch/x86/platform/efi/efi_stub_64.S    | 161 ++++++++
 arch/x86/platform/efi/efi_thunk.S      |  65 ++++
 drivers/firmware/efi/efi-stub-helper.c | 142 ++-----
 include/linux/efi.h                    | 252 +++++++++++++
 20 files changed, 1807 insertions(+), 346 deletions(-)
 create mode 100644 arch/x86/platform/efi/efi_thunk.S

-- 
1.8.3.1

--
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




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux