aboutsummaryrefslogtreecommitdiff
path: root/core/init.c
diff options
context:
space:
mode:
authorStewart Smith <stewart@linux.vnet.ibm.com>2017-12-13 19:38:33 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-12-20 08:54:07 +1100
commit1ddf7e51936f82a5ba8b6145962fbc278d591cde (patch)
tree7d4f1c369f80b72395a7d23f9b647905761bacb6 /core/init.c
parent6e05c6f21b34f9c4f6597ace36dfca9624c7923c (diff)
downloadskiboot-1ddf7e51936f82a5ba8b6145962fbc278d591cde.zip
skiboot-1ddf7e51936f82a5ba8b6145962fbc278d591cde.tar.gz
skiboot-1ddf7e51936f82a5ba8b6145962fbc278d591cde.tar.bz2
Mambo: run hello_world and sreset_world tests with Secure and Trusted Boot
We *disable* the secure boot part, but we keep the verified boot part as we don't currently have container verification code for Mambo. We can run a small part of the code currently though. Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'core/init.c')
-rw-r--r--core/init.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/core/init.c b/core/init.c
index 0405f5c..ec9f329 100644
--- a/core/init.c
+++ b/core/init.c
@@ -342,6 +342,7 @@ bool start_preload_kernel(void)
static bool load_kernel(void)
{
+ void *stb_container = NULL;
struct elf_hdr *kh;
int loaded;
@@ -390,9 +391,10 @@ static bool load_kernel(void)
/* Hack for STB in Mambo, assume at least 4kb in mem */
kernel_size = SECURE_BOOT_HEADERS_SIZE;
}
- if (stb_is_container(KERNEL_LOAD_BASE, kernel_size))
+ if (stb_is_container(KERNEL_LOAD_BASE, kernel_size)) {
+ stb_container = KERNEL_LOAD_BASE;
kh = (struct elf_hdr *) (KERNEL_LOAD_BASE + SECURE_BOOT_HEADERS_SIZE);
- else
+ } else
kh = (struct elf_hdr *) (KERNEL_LOAD_BASE);
}
@@ -417,6 +419,15 @@ static bool load_kernel(void)
return false;
}
+ if (chip_quirk(QUIRK_MAMBO_CALLOUTS)) {
+ secureboot_verify(RESOURCE_ID_KERNEL,
+ stb_container,
+ SECURE_BOOT_HEADERS_SIZE + kernel_size);
+ trustedboot_measure(RESOURCE_ID_KERNEL,
+ stb_container,
+ SECURE_BOOT_HEADERS_SIZE + kernel_size);
+ }
+
trustedboot_exit_boot_services();
return true;