mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-26 14:55:16 +00:00
TF-A: Add support for Measured Boot driver to FCONF
This patch adds support for Measured Boot driver functionality to FCONF library code. Change-Id: I81cdb06f1950f7e6e58f938a1b9c2f74f7cfdf88 Signed-off-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
This commit is contained in:
parent
3f498b0dc2
commit
c3825c9bb7
2 changed files with 35 additions and 15 deletions
|
@ -12,7 +12,7 @@
|
|||
#include <lib/object_pool.h>
|
||||
#include <libfdt.h>
|
||||
|
||||
/* We currently use FW, TB_FW, SOC_FW, TOS_FW, NS_fw and HW configs */
|
||||
/* We currently use FW, TB_FW, SOC_FW, TOS_FW, NT_FW and HW configs */
|
||||
#define MAX_DTB_INFO U(6)
|
||||
|
||||
static struct dyn_cfg_dtb_info_t dtb_infos[MAX_DTB_INFO];
|
||||
|
|
|
@ -27,20 +27,25 @@ int fconf_populate_tbbr_dyn_config(uintptr_t config)
|
|||
const char *compatible_str = "arm,tb_fw";
|
||||
node = fdt_node_offset_by_compatible(dtb, -1, compatible_str);
|
||||
if (node < 0) {
|
||||
ERROR("FCONF: Can't find %s compatible in dtb\n", compatible_str);
|
||||
ERROR("FCONF: Can't find `%s` compatible in dtb\n",
|
||||
compatible_str);
|
||||
return node;
|
||||
}
|
||||
|
||||
/* Locate the disable_auth cell and read the value */
|
||||
err = fdt_read_uint32(dtb, node, "disable_auth", &tbbr_dyn_config.disable_auth);
|
||||
err = fdt_read_uint32(dtb, node, "disable_auth",
|
||||
&tbbr_dyn_config.disable_auth);
|
||||
if (err < 0) {
|
||||
WARN("FCONF: Read cell failed for `disable_auth`\n");
|
||||
WARN("FCONF: Read %s failed for `%s`\n",
|
||||
"cell", "disable_auth");
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Check if the value is boolean */
|
||||
if ((tbbr_dyn_config.disable_auth != 0U) && (tbbr_dyn_config.disable_auth != 1U)) {
|
||||
WARN("Invalid value for `disable_auth` cell %d\n", tbbr_dyn_config.disable_auth);
|
||||
if ((tbbr_dyn_config.disable_auth != 0U) &&
|
||||
(tbbr_dyn_config.disable_auth != 1U)) {
|
||||
WARN("Invalid value for `%s` cell %d\n",
|
||||
"disable_auth", tbbr_dyn_config.disable_auth);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -52,25 +57,40 @@ int fconf_populate_tbbr_dyn_config(uintptr_t config)
|
|||
/* Retrieve the Mbed TLS heap details from the DTB */
|
||||
err = fdt_read_uint64(dtb, node, "mbedtls_heap_addr", &val64);
|
||||
if (err < 0) {
|
||||
ERROR("FCONF: Read cell failed for mbedtls_heap\n");
|
||||
ERROR("FCONF: Read %s failed for `%s`\n",
|
||||
"cell", "mbedtls_heap_addr");
|
||||
return err;
|
||||
}
|
||||
tbbr_dyn_config.mbedtls_heap_addr = (void *)(uintptr_t)val64;
|
||||
|
||||
err = fdt_read_uint32(dtb, node, "mbedtls_heap_size", &val32);
|
||||
if (err < 0) {
|
||||
ERROR("FCONF: Read cell failed for mbedtls_heap\n");
|
||||
ERROR("FCONF: Read %s failed for `%s`\n",
|
||||
"cell", "mbedtls_heap_size");
|
||||
return err;
|
||||
}
|
||||
tbbr_dyn_config.mbedtls_heap_size = val32;
|
||||
|
||||
VERBOSE("FCONF:tbbr.disable_auth cell found with value = %d\n",
|
||||
tbbr_dyn_config.disable_auth);
|
||||
VERBOSE("FCONF:tbbr.mbedtls_heap_addr cell found with value = %p\n",
|
||||
tbbr_dyn_config.mbedtls_heap_addr);
|
||||
VERBOSE("FCONF:tbbr.mbedtls_heap_size cell found with value = %zu\n",
|
||||
tbbr_dyn_config.mbedtls_heap_size);
|
||||
|
||||
#if MEASURED_BOOT
|
||||
/* Retrieve BL2 hash data details from the DTB */
|
||||
err = fdtw_read_bytes(dtb, node, "bl2_hash_data", TCG_DIGEST_SIZE,
|
||||
&tbbr_dyn_config.bl2_hash_data);
|
||||
if (err < 0) {
|
||||
ERROR("FCONF: Read %s failed for '%s'\n",
|
||||
"bytes", "bl2_hash_data");
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
VERBOSE("%s%s%s %d\n", "FCONF: `tbbr.", "disable_auth",
|
||||
"` cell found with value =", tbbr_dyn_config.disable_auth);
|
||||
VERBOSE("%s%s%s %p\n", "FCONF: `tbbr.", "mbedtls_heap_addr",
|
||||
"` cell found with value =", tbbr_dyn_config.mbedtls_heap_addr);
|
||||
VERBOSE("%s%s%s %zu\n", "FCONF: `tbbr.", "mbedtls_heap_size",
|
||||
"` cell found with value =", tbbr_dyn_config.mbedtls_heap_size);
|
||||
#if MEASURED_BOOT
|
||||
VERBOSE("%s%s%s %p\n", "FCONF: `tbbr.", "bl2_hash_data",
|
||||
"` array found at address =", tbbr_dyn_config.bl2_hash_data);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue