diff options
Diffstat (limited to 'arch/powerpc/kernel/secure_boot.c')
-rw-r--r-- | arch/powerpc/kernel/secure_boot.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/secure_boot.c b/arch/powerpc/kernel/secure_boot.c index 4b982324d368..3a28795b4ed8 100644 --- a/arch/powerpc/kernel/secure_boot.c +++ b/arch/powerpc/kernel/secure_boot.c @@ -5,6 +5,7 @@ */ #include <linux/types.h> #include <linux/of.h> +#include <linux/string_choices.h> #include <asm/secure_boot.h> static struct device_node *get_ppc_fw_sb_node(void) @@ -23,13 +24,22 @@ bool is_ppc_secureboot_enabled(void) { struct device_node *node; bool enabled = false; + u32 secureboot; node = get_ppc_fw_sb_node(); enabled = of_property_read_bool(node, "os-secureboot-enforcing"); + of_node_put(node); + + if (enabled) + goto out; + node = of_find_node_by_path("/"); + if (!of_property_read_u32(node, "ibm,secure-boot", &secureboot)) + enabled = (secureboot > 1); of_node_put(node); - pr_info("Secure boot mode %s\n", enabled ? "enabled" : "disabled"); +out: + pr_info("Secure boot mode %s\n", str_enabled_disabled(enabled)); return enabled; } @@ -38,13 +48,22 @@ bool is_ppc_trustedboot_enabled(void) { struct device_node *node; bool enabled = false; + u32 trustedboot; node = get_ppc_fw_sb_node(); enabled = of_property_read_bool(node, "trusted-enabled"); + of_node_put(node); + + if (enabled) + goto out; + node = of_find_node_by_path("/"); + if (!of_property_read_u32(node, "ibm,trusted-boot", &trustedboot)) + enabled = (trustedboot > 0); of_node_put(node); - pr_info("Trusted boot mode %s\n", enabled ? "enabled" : "disabled"); +out: + pr_info("Trusted boot mode %s\n", str_enabled_disabled(enabled)); return enabled; } |