1*1a8916eeSNayna Jain // SPDX-License-Identifier: GPL-2.0 2*1a8916eeSNayna Jain /* 3*1a8916eeSNayna Jain * Copyright (C) 2019 IBM Corporation 4*1a8916eeSNayna Jain * Author: Nayna Jain 5*1a8916eeSNayna Jain */ 6*1a8916eeSNayna Jain #include <linux/types.h> 7*1a8916eeSNayna Jain #include <linux/of.h> 8*1a8916eeSNayna Jain #include <asm/secure_boot.h> 9*1a8916eeSNayna Jain 10*1a8916eeSNayna Jain static struct device_node *get_ppc_fw_sb_node(void) 11*1a8916eeSNayna Jain { 12*1a8916eeSNayna Jain static const struct of_device_id ids[] = { 13*1a8916eeSNayna Jain { .compatible = "ibm,secureboot", }, 14*1a8916eeSNayna Jain { .compatible = "ibm,secureboot-v1", }, 15*1a8916eeSNayna Jain { .compatible = "ibm,secureboot-v2", }, 16*1a8916eeSNayna Jain {}, 17*1a8916eeSNayna Jain }; 18*1a8916eeSNayna Jain 19*1a8916eeSNayna Jain return of_find_matching_node(NULL, ids); 20*1a8916eeSNayna Jain } 21*1a8916eeSNayna Jain 22*1a8916eeSNayna Jain bool is_ppc_secureboot_enabled(void) 23*1a8916eeSNayna Jain { 24*1a8916eeSNayna Jain struct device_node *node; 25*1a8916eeSNayna Jain bool enabled = false; 26*1a8916eeSNayna Jain 27*1a8916eeSNayna Jain node = get_ppc_fw_sb_node(); 28*1a8916eeSNayna Jain enabled = of_property_read_bool(node, "os-secureboot-enforcing"); 29*1a8916eeSNayna Jain 30*1a8916eeSNayna Jain of_node_put(node); 31*1a8916eeSNayna Jain 32*1a8916eeSNayna Jain pr_info("Secure boot mode %s\n", enabled ? "enabled" : "disabled"); 33*1a8916eeSNayna Jain 34*1a8916eeSNayna Jain return enabled; 35*1a8916eeSNayna Jain } 36