528229d210
For secure VMs, the signing tool will create a ticket called the "ESM blob" for the Enter Secure Mode ultravisor call with the signatures of the kernel and initrd among other things. This adds support to the wrapper script for adding that blob via the "-e" option to the zImage.pseries. It also adds code to the zImage wrapper itself to retrieve and if necessary relocate the blob, and pass its address to Linux via the device-tree, to be later consumed by prom_init. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> [ bauerman: Minor adjustments to some comments. ] Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20190820021326.6884-4-bauerman@linux.ibm.com
100 lines
1.4 KiB
ArmAsm
100 lines
1.4 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#include <asm-generic/vmlinux.lds.h>
|
|
|
|
#ifdef CONFIG_PPC64_BOOT_WRAPPER
|
|
OUTPUT_ARCH(powerpc:common64)
|
|
#else
|
|
OUTPUT_ARCH(powerpc:common)
|
|
#endif
|
|
ENTRY(_zimage_start)
|
|
EXTERN(_zimage_start)
|
|
SECTIONS
|
|
{
|
|
.text :
|
|
{
|
|
_start = .;
|
|
*(.text)
|
|
*(.fixup)
|
|
_etext = .;
|
|
}
|
|
. = ALIGN(4096);
|
|
.data :
|
|
{
|
|
*(.rodata*)
|
|
*(.data*)
|
|
*(.sdata*)
|
|
#ifndef CONFIG_PPC64_BOOT_WRAPPER
|
|
*(.got2)
|
|
#endif
|
|
}
|
|
.dynsym : { *(.dynsym) }
|
|
.dynstr : { *(.dynstr) }
|
|
.dynamic :
|
|
{
|
|
__dynamic_start = .;
|
|
*(.dynamic)
|
|
}
|
|
.hash : { *(.hash) }
|
|
.interp : { *(.interp) }
|
|
.rela.dyn :
|
|
{
|
|
#ifdef CONFIG_PPC64_BOOT_WRAPPER
|
|
__rela_dyn_start = .;
|
|
#endif
|
|
*(.rela*)
|
|
}
|
|
|
|
. = ALIGN(8);
|
|
.kernel:dtb :
|
|
{
|
|
_dtb_start = .;
|
|
*(.kernel:dtb)
|
|
_dtb_end = .;
|
|
}
|
|
|
|
. = ALIGN(4096);
|
|
.kernel:vmlinux.strip :
|
|
{
|
|
_vmlinux_start = .;
|
|
*(.kernel:vmlinux.strip)
|
|
_vmlinux_end = .;
|
|
}
|
|
|
|
. = ALIGN(4096);
|
|
.kernel:initrd :
|
|
{
|
|
_initrd_start = .;
|
|
*(.kernel:initrd)
|
|
_initrd_end = .;
|
|
}
|
|
|
|
. = ALIGN(4096);
|
|
.kernel:esm_blob :
|
|
{
|
|
_esm_blob_start = .;
|
|
*(.kernel:esm_blob)
|
|
_esm_blob_end = .;
|
|
}
|
|
|
|
#ifdef CONFIG_PPC64_BOOT_WRAPPER
|
|
. = ALIGN(256);
|
|
.got :
|
|
{
|
|
__toc_start = .;
|
|
*(.got)
|
|
*(.toc)
|
|
}
|
|
#endif
|
|
|
|
. = ALIGN(4096);
|
|
.bss :
|
|
{
|
|
_edata = .;
|
|
__bss_start = .;
|
|
*(.sbss)
|
|
*(.bss)
|
|
*(COMMON)
|
|
_end = . ;
|
|
}
|
|
}
|