summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2019-11-21 15:16:37 +0800
committerJeremy Kerr <jk@ozlabs.org>2020-01-23 09:02:43 +0800
commit05d9b9ba495d2898b9306efa33e07a0171b225fb (patch)
tree149c069b0df931f30dc5fa32f96bb0b0b6b24d38
parentaa2d71a84ed6ba693b7dcde213c82c46f334f640 (diff)
downloadtalos-petitboot-05d9b9ba495d2898b9306efa33e07a0171b225fb.tar.gz
talos-petitboot-05d9b9ba495d2898b9306efa33e07a0171b225fb.zip
discover/powerpc: detect secureboot enforcing mode
As per the OPAL devicetree specification: https://github.com/open-power/skiboot/blob/master/doc/device-tree/ibm%2Csecureboot.rst Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r--discover/platform-powerpc.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/discover/platform-powerpc.c b/discover/platform-powerpc.c
index fcfe41a..6ec4a0a 100644
--- a/discover/platform-powerpc.c
+++ b/discover/platform-powerpc.c
@@ -938,6 +938,31 @@ static void pre_boot(struct platform *p, const struct config *config)
platform->set_os_boot_sensor(platform);
}
+static void get_sysinfo_stb(struct platform_powerpc *platform,
+ struct system_info *sysinfo)
+{
+ char *filename;
+ unsigned int i;
+ int rc;
+ struct {
+ const char *name;
+ bool *flag;
+ } props[] = {
+ { "secure-enabled", &sysinfo->stb_fw_enforcing },
+ { "trusted-enabled", &sysinfo->stb_fw_measurement },
+ { "os-secureboot-enforcing", &sysinfo->stb_os_enforcing },
+ };
+
+ for (i = 0; i < ARRAY_SIZE(props); i++) {
+ struct stat statbuf;
+ filename = talloc_asprintf(platform, "%sibm,secureboot/%s",
+ devtree_dir, props[i].name);
+ rc = stat(filename, &statbuf);
+ *props[i].flag = (rc == 0);
+ talloc_free(filename);
+ }
+}
+
static int get_sysinfo(struct platform *p, struct system_info *sysinfo)
{
struct platform_powerpc *platform = p->platform_data;
@@ -966,6 +991,9 @@ static int get_sysinfo(struct platform *p, struct system_info *sysinfo)
if (platform->get_platform_versions)
platform->get_platform_versions(sysinfo);
+ get_sysinfo_stb(platform, sysinfo);
+
+
return 0;
}
OpenPOWER on IntegriCloud