[PATCH -mm 0/4 -v6] x86_64 EFI runtime service support

From: Huang, Ying
Date: Mon Nov 26 2007 - 03:20:36 EST


Following patchset adds EFI/UEFI (Unified Extensible Firmware
Interface) runtime services support to x86_64 architecture.

The patchset have been tested against 2.6.24-rc3-mm1 kernel on Intel
platforms with 64-bit EFI1.10 and UEFI2.0 firmware. Because the
duplicated code between efi_32.c and efi_64.c is removed, the patchset
is also tested on Intel platform with 32-bit EFI firmware.


v6:

- Fix a bug about runtime service memory mapping.

- Rebase on 2.6.24-rc3-mm1

v5:

- Remove the duplicated code between efi_32.c and efi_64.c.

- Rename lin2win<x> to efi_call<x>.

- Make EFI time runtime service default to off.

- Use different bootloader signature for EFI32 and EFI64, so that
kernel can know whether underlaying EFI firmware is 64-bit or
32-bit.

v4:

- EFI boot parameters are extended for 64-bit EFI in a 32-bit EFI
compatible way.

- Add EFI runtime services document.

v3:

- Remove E820_RUNTIME_CODE, the EFI memory map is used to deal with
EFI runtime code area.

- The method used to make EFI runtime code area executable is change:

a. Before page allocation is usable, the PMD of direct mapping is
changed temporarily before and after each EFI call.

b. After page allocation is usable, change_page_attr_addr is used to
change corresponding page attribute.

- Use fixmap to map EFI memory mapped IO memory area to make kexec
workable.

- Add a kernel command line option "noefi" to make it possible to turn
off EFI runtime services support.

- Function pointers are used for EFI time runtime service.

- EFI reboot runtime service is embedded into the framework of
reboot_type.

- A kernel command line option "noefi_time" is added to make it
possible to fall back to CMOS based implementation.

v2:

- The EFI callwrapper is re-implemented in assembler.


Best Regards,
Huang Ying
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/