Commit cdd78578 authored by Mark Salter's avatar Mark Salter Committed by Matt Fleming

doc: arm64: add description of EFI stub support

Add explanation of arm64 EFI stub and kernel image header changes
needed to masquerade as a PE/COFF application.
Signed-off-by: default avatarMark Salter <msalter@redhat.com>
Signed-off-by: default avatarLeif Lindholm <leif.lindholm@linaro.org>
Acked-by: default avatarGrant Likely <grant.likely@linaro.org>
Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
parent 3c7f2550
...@@ -85,6 +85,10 @@ The decompressed kernel image contains a 64-byte header as follows: ...@@ -85,6 +85,10 @@ The decompressed kernel image contains a 64-byte header as follows:
Header notes: Header notes:
- code0/code1 are responsible for branching to stext. - code0/code1 are responsible for branching to stext.
- when booting through EFI, code0/code1 are initially skipped.
res5 is an offset to the PE header and the PE header has the EFI
entry point (efi_stub_entry). When the stub has done its work, it
jumps to code0 to resume the normal boot process.
The image must be placed at the specified offset (currently 0x80000) The image must be placed at the specified offset (currently 0x80000)
from the start of the system RAM and called there. The start of the from the start of the system RAM and called there. The start of the
......
...@@ -12,6 +12,11 @@ arch/arm/boot/compressed/efi-header.S and ...@@ -12,6 +12,11 @@ arch/arm/boot/compressed/efi-header.S and
arch/arm/boot/compressed/efi-stub.c. EFI stub code that is shared arch/arm/boot/compressed/efi-stub.c. EFI stub code that is shared
between architectures is in drivers/firmware/efi/efi-stub-helper.c. between architectures is in drivers/firmware/efi/efi-stub-helper.c.
For arm64, there is no compressed kernel support, so the Image itself
masquerades as a PE/COFF image and the EFI stub is linked into the
kernel. The arm64 EFI stub lives in arch/arm64/kernel/efi-entry.S
and arch/arm64/kernel/efi-stub.c.
By using the EFI boot stub it's possible to boot a Linux kernel By using the EFI boot stub it's possible to boot a Linux kernel
without the use of a conventional EFI boot loader, such as grub or without the use of a conventional EFI boot loader, such as grub or
elilo. Since the EFI boot stub performs the jobs of a boot loader, in elilo. Since the EFI boot stub performs the jobs of a boot loader, in
...@@ -28,7 +33,8 @@ the extension the EFI firmware loader will refuse to execute it. It's ...@@ -28,7 +33,8 @@ the extension the EFI firmware loader will refuse to execute it. It's
not possible to execute bzImage.efi from the usual Linux file systems not possible to execute bzImage.efi from the usual Linux file systems
because EFI firmware doesn't have support for them. For ARM the because EFI firmware doesn't have support for them. For ARM the
arch/arm/boot/zImage should be copied to the system partition, and it arch/arm/boot/zImage should be copied to the system partition, and it
may not need to be renamed. may not need to be renamed. Similarly for arm64, arch/arm64/boot/Image
should be copied but not necessarily renamed.
**** Passing kernel parameters from the EFI shell **** Passing kernel parameters from the EFI shell
...@@ -72,7 +78,7 @@ is passed to bzImage.efi. ...@@ -72,7 +78,7 @@ is passed to bzImage.efi.
**** The "dtb=" option **** The "dtb=" option
For the ARM architecture, we also need to be able to provide a device For the ARM and arm64 architectures, we also need to be able to provide a
tree to the kernel. This is done with the "dtb=" command line option, device tree to the kernel. This is done with the "dtb=" command line option,
and is processed in the same manner as the "initrd=" option that is and is processed in the same manner as the "initrd=" option that is
described above. described above.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment