Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
c7aa7fdf
Unverified
Commit
c7aa7fdf
authored
7 years ago
by
davidcunado-arm
Committed by
GitHub
7 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1263 from soby-mathew/sm/dyn_config
Dynamic Configuration Prototype
parents
5ff6da94
da5f2745
master
v2.5
v2.5-rc1
v2.5-rc0
v2.4
v2.4-rc2
v2.4-rc1
v2.4-rc0
v2.3
v2.3-rc2
v2.3-rc1
v2.3-rc0
v2.2
v2.2-rc2
v2.2-rc1
v2.2-rc0
v2.1
v2.1-rc1
v2.1-rc0
v2.0
v2.0-rc0
v1.6
v1.6-rc1
v1.6-rc0
v1.5
v1.5-rc3
v1.5-rc2
v1.5-rc1
v1.5-rc0
arm_cca_v0.2
arm_cca_v0.1
No related merge requests found
Changes
57
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
plat/arm/common/arm_bl31_setup.c
+13
-14
plat/arm/common/arm_bl31_setup.c
plat/arm/common/arm_common.mk
+8
-0
plat/arm/common/arm_common.mk
plat/arm/common/arm_dyn_cfg.c
+109
-0
plat/arm/common/arm_dyn_cfg.c
plat/arm/common/arm_dyn_cfg_helpers.c
+94
-0
plat/arm/common/arm_dyn_cfg_helpers.c
plat/arm/common/arm_image_load.c
+6
-2
plat/arm/common/arm_image_load.c
plat/arm/common/arm_io_storage.c
+19
-1
plat/arm/common/arm_io_storage.c
plat/arm/common/sp_min/arm_sp_min_setup.c
+7
-7
plat/arm/common/sp_min/arm_sp_min_setup.c
plat/arm/css/common/css_bl2_setup.c
+4
-3
plat/arm/css/common/css_bl2_setup.c
plat/common/aarch32/plat_common.c
+13
-1
plat/common/aarch32/plat_common.c
plat/common/aarch64/plat_common.c
+8
-1
plat/common/aarch64/plat_common.c
plat/common/plat_bl1_common.c
+61
-1
plat/common/plat_bl1_common.c
plat/common/plat_bl2_el3_common.c
+0
-24
plat/common/plat_bl2_el3_common.c
plat/common/plat_bl_common.c
+66
-0
plat/common/plat_bl_common.c
tools/cert_create/include/tbbr/tbb_ext.h
+3
-1
tools/cert_create/include/tbbr/tbb_ext.h
tools/cert_create/src/tbbr/tbb_cert.c
+5
-3
tools/cert_create/src/tbbr/tbb_cert.c
tools/cert_create/src/tbbr/tbb_ext.c
+21
-1
tools/cert_create/src/tbbr/tbb_ext.c
tools/fiptool/tbbr_config.c
+12
-2
tools/fiptool/tbbr_config.c
with
449 additions
and
61 deletions
+449
-61
plat/arm/common/arm_bl31_setup.c
View file @
c7aa7fdf
/*
* Copyright (c) 2015-201
6
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -26,7 +26,7 @@ static entry_point_info_t bl33_image_ep_info;
/* Weak definitions may be overridden in specific ARM standard platform */
#pragma weak bl31_early_platform_setup
#pragma weak bl31_early_platform_setup
2
#pragma weak bl31_platform_setup
#pragma weak bl31_plat_arch_setup
#pragma weak bl31_plat_get_next_image_ep_info
...
...
@@ -64,11 +64,11 @@ entry_point_info_t *bl31_plat_get_next_image_ep_info(uint32_t type)
* we are guaranteed to pick up good data.
******************************************************************************/
#if LOAD_IMAGE_V2
void
arm_bl31_early_platform_setup
(
void
*
from_bl2
,
void
*
plat_params_from_bl2
)
void
arm_bl31_early_platform_setup
(
void
*
from_bl2
,
uintptr_t
soc_fw_config
,
uintptr_t
hw_config
,
void
*
plat_params_from_bl2
)
#else
void
arm_bl31_early_platform_setup
(
bl31_params_t
*
from_bl2
,
void
*
plat_params_from_bl2
)
void
arm_bl31_early_platform_setup
(
bl31_params_t
*
from_bl2
,
uintptr_t
soc_fw_config
,
uintptr_t
hw_config
,
void
*
plat_params_from_bl2
)
#endif
{
/* Initialize the console to provide early debug support */
...
...
@@ -152,6 +152,10 @@ void arm_bl31_early_platform_setup(bl31_params_t *from_bl2,
assert
(
from_bl2
->
h
.
type
==
PARAM_BL31
);
assert
(
from_bl2
->
h
.
version
>=
VERSION_1
);
/* Dynamic Config is not supported for LOAD_IMAGE_V1 */
assert
(
soc_fw_config
==
0
);
assert
(
hw_config
==
0
);
/*
* Copy BL32 (if populated by BL2) and BL33 entry point information.
* They are stored in Secure RAM, in BL2's address space.
...
...
@@ -164,15 +168,10 @@ void arm_bl31_early_platform_setup(bl31_params_t *from_bl2,
#endif
/* RESET_TO_BL31 */
}
#if LOAD_IMAGE_V2
void
bl31_early_platform_setup
(
void
*
from_bl2
,
void
*
plat_params_from_bl2
)
#else
void
bl31_early_platform_setup
(
bl31_params_t
*
from_bl2
,
void
*
plat_params_from_bl2
)
#endif
void
bl31_early_platform_setup2
(
u_register_t
arg0
,
u_register_t
arg1
,
u_register_t
arg2
,
u_register_t
arg3
)
{
arm_bl31_early_platform_setup
(
from_bl2
,
plat_params_from_bl2
);
arm_bl31_early_platform_setup
(
(
void
*
)
arg0
,
arg1
,
arg2
,
(
void
*
)
arg3
);
/*
* Initialize Interconnect for this cluster during cold boot.
...
...
This diff is collapsed.
Click to expand it.
plat/arm/common/arm_common.mk
View file @
c7aa7fdf
...
...
@@ -136,6 +136,7 @@ BL1_SOURCES += drivers/arm/sp805/sp805.c \
drivers/io/io_memmap.c
\
drivers/io/io_storage.c
\
plat/arm/common/arm_bl1_setup.c
\
plat/arm/common/arm_dyn_cfg.c
\
plat/arm/common/arm_io_storage.c
ifdef
EL3_PAYLOAD_BASE
# Need the arm_program_trusted_mailbox() function to release secondary CPUs from
...
...
@@ -151,6 +152,13 @@ BL2_SOURCES += drivers/delay_timer/delay_timer.c \
plat/arm/common/arm_bl2_setup.c
\
plat/arm/common/arm_io_storage.c
# Add `libfdt` and Arm common helpers required for Dynamic Config
include
lib/libfdt/libfdt.mk
BL2_SOURCES
+=
plat/arm/common/arm_dyn_cfg.c
\
plat/arm/common/arm_dyn_cfg_helpers.c
\
common/fdt_wrappers.c
\
${LIBFDT_SRCS}
ifeq
(${BL2_AT_EL3},1)
BL2_SOURCES
+=
plat/arm/common/arm_bl2_el3_setup.c
endif
...
...
This diff is collapsed.
Click to expand it.
plat/arm/common/arm_dyn_cfg.c
0 → 100644
View file @
c7aa7fdf
/*
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <arm_dyn_cfg_helpers.h>
#include <assert.h>
#include <debug.h>
#include <desc_image_load.h>
#include <plat_arm.h>
#include <platform.h>
#include <platform_def.h>
#include <string.h>
#include <tbbr_img_def.h>
#if LOAD_IMAGE_V2
/* Variable to store the address to TB_FW_CONFIG passed from BL1 */
static
void
*
tb_fw_cfg_dtb
;
/*
* Helper function to load TB_FW_CONFIG and populate the load information to
* arg0 of BL2 entrypoint info.
*/
void
arm_load_tb_fw_config
(
void
)
{
int
err
;
uintptr_t
config_base
=
0
;
image_desc_t
*
image_desc
;
image_desc_t
arm_tb_fw_info
=
{
.
image_id
=
TB_FW_CONFIG_ID
,
SET_STATIC_PARAM_HEAD
(
image_info
,
PARAM_IMAGE_BINARY
,
VERSION_2
,
image_info_t
,
0
),
.
image_info
.
image_base
=
ARM_TB_FW_CONFIG_BASE
,
.
image_info
.
image_max_size
=
ARM_TB_FW_CONFIG_LIMIT
-
ARM_TB_FW_CONFIG_BASE
,
};
VERBOSE
(
"BL1: Loading TB_FW_CONFIG
\n
"
);
err
=
load_auth_image
(
TB_FW_CONFIG_ID
,
&
arm_tb_fw_info
.
image_info
);
if
(
err
!=
0
)
{
/* Return if TB_FW_CONFIG is not loaded */
VERBOSE
(
"Failed to load TB_FW_CONFIG
\n
"
);
return
;
}
config_base
=
arm_tb_fw_info
.
image_info
.
image_base
;
/* The BL2 ep_info arg0 is modified to point to TB_FW_CONFIG */
image_desc
=
bl1_plat_get_image_desc
(
BL2_IMAGE_ID
);
assert
(
image_desc
!=
NULL
);
image_desc
->
ep_info
.
args
.
arg0
=
config_base
;
INFO
(
"BL1: TB_FW_CONFIG loaded at address = %p
\n
"
,
(
void
*
)
config_base
);
}
/*
* BL2 utility function to set the address of TB_FW_CONFIG passed from BL1.
*/
void
arm_bl2_set_tb_cfg_addr
(
void
*
dtb
)
{
assert
(
dtb
!=
NULL
);
tb_fw_cfg_dtb
=
dtb
;
}
/*
* BL2 utility function to initialize dynamic configuration specified by
* TB_FW_CONFIG. Return early if TB_FW_CONFIG is not found or HW_CONFIG is
* not specified in TB_FW_CONFIG.
*/
void
arm_bl2_dyn_cfg_init
(
void
)
{
int
err
=
0
;
int
tb_fw_node
;
bl_mem_params_node_t
*
hw_cfg_mem_params
=
NULL
;
if
(
tb_fw_cfg_dtb
==
NULL
)
{
VERBOSE
(
"No TB_FW_CONFIG specified
\n
"
);
return
;
}
err
=
arm_dyn_tb_fw_cfg_init
((
void
*
)
tb_fw_cfg_dtb
,
&
tb_fw_node
);
if
(
err
<
0
)
{
ERROR
(
"Invalid TB_FW_CONFIG passed from BL1
\n
"
);
panic
();
}
/* Get the hw_config load address and size from TB_FW_CONFIG */
hw_cfg_mem_params
=
get_bl_mem_params_node
(
HW_CONFIG_ID
);
if
(
hw_cfg_mem_params
==
NULL
)
{
VERBOSE
(
"Couldn't find HW_CONFIG in bl_mem_params_node
\n
"
);
return
;
}
err
=
arm_dyn_get_hwconfig_info
((
void
*
)
tb_fw_cfg_dtb
,
tb_fw_node
,
(
uint64_t
*
)
&
hw_cfg_mem_params
->
image_info
.
image_base
,
&
hw_cfg_mem_params
->
image_info
.
image_max_size
);
if
(
err
<
0
)
{
VERBOSE
(
"Couldn't find HW_CONFIG load info in TB_FW_CONFIG
\n
"
);
return
;
}
/* Remove the IMAGE_ATTRIB_SKIP_LOADING attribute from HW_CONFIG node */
hw_cfg_mem_params
->
image_info
.
h
.
attr
&=
~
IMAGE_ATTRIB_SKIP_LOADING
;
}
#endif
/* LOAD_IMAGE_V2 */
This diff is collapsed.
Click to expand it.
plat/arm/common/arm_dyn_cfg_helpers.c
0 → 100644
View file @
c7aa7fdf
/*
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <assert.h>
#include <desc_image_load.h>
#include <fdt_wrappers.h>
#include <libfdt.h>
#include <plat_arm.h>
/*******************************************************************************
* Helper to read the `hw_config` property in config DTB. This function
* expects the following properties to be present in the config DTB.
* name : hw_config_addr size : 2 cells
* name : hw_config_max_size size : 1 cell
*
* Arguments:
* void *dtb - pointer to the TB_FW_CONFIG in memory
* int node - The node offset to appropriate node in the
* DTB.
* uint64_t *hw_config_addr - Returns the `hw_config` load address if read
* is successful.
* uint32_t *hw_config_size - Returns the `hw_config` size if read is
* successful.
*
* Returns 0 on success and -1 on error.
******************************************************************************/
int
arm_dyn_get_hwconfig_info
(
void
*
dtb
,
int
node
,
uint64_t
*
hw_config_addr
,
uint32_t
*
hw_config_size
)
{
int
err
;
assert
(
dtb
!=
NULL
);
assert
(
hw_config_addr
!=
NULL
);
assert
(
hw_config_size
!=
NULL
);
/* Check if the pointer to DT is correct */
assert
(
fdt_check_header
(
dtb
)
==
0
);
/* Assert the node offset point to "arm,tb_fw" compatible property */
assert
(
node
==
fdt_node_offset_by_compatible
(
dtb
,
-
1
,
"arm,tb_fw"
));
err
=
fdtw_read_cells
(
dtb
,
node
,
"hw_config_addr"
,
2
,
(
void
*
)
hw_config_addr
);
if
(
err
<
0
)
{
WARN
(
"Read cell failed for hw_config_addr
\n
"
);
return
-
1
;
}
err
=
fdtw_read_cells
(
dtb
,
node
,
"hw_config_max_size"
,
1
,
(
void
*
)
hw_config_size
);
if
(
err
<
0
)
{
WARN
(
"Read cell failed for hw_config_max_size
\n
"
);
return
-
1
;
}
VERBOSE
(
"Dyn cfg: Read hw_config address from TB_FW_CONFIG 0x%p %p
\n
"
,
hw_config_addr
,
hw_config_size
);
return
0
;
}
/*******************************************************************************
* Validate the tb_fw_config is a valid DTB file and returns the node offset
* to "arm,tb_fw" property.
* Arguments:
* void *dtb - pointer to the TB_FW_CONFIG in memory
* int *node - Returns the node offset to "arm,tb_fw" property if found.
*
* Returns 0 on success and -1 on error.
******************************************************************************/
int
arm_dyn_tb_fw_cfg_init
(
void
*
dtb
,
int
*
node
)
{
assert
(
dtb
!=
NULL
);
assert
(
node
!=
NULL
);
/* Check if the pointer to DT is correct */
if
(
fdt_check_header
(
dtb
)
!=
0
)
{
WARN
(
"Invalid DTB file passed as TB_FW_CONFIG
\n
"
);
return
-
1
;
}
/* Assert the node offset point to "arm,tb_fw" compatible property */
*
node
=
fdt_node_offset_by_compatible
(
dtb
,
-
1
,
"arm,tb_fw"
);
if
(
*
node
<
0
)
{
WARN
(
"The compatible property `arm,tb_fw` not found in the config
\n
"
);
return
-
1
;
}
VERBOSE
(
"Dyn cfg: Found
\"
arm,tb_fw
\"
in the config
\n
"
);
return
0
;
}
This diff is collapsed.
Click to expand it.
plat/arm/common/arm_image_load.c
View file @
c7aa7fdf
/*
* Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016
-2018
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -7,6 +7,7 @@
#include <arm_def.h>
#include <bl_common.h>
#include <desc_image_load.h>
#include <plat_arm.h>
#include <platform.h>
...
...
@@ -37,5 +38,8 @@ bl_load_info_t *plat_get_bl_image_load_info(void)
******************************************************************************/
bl_params_t
*
plat_get_next_bl_params
(
void
)
{
return
get_next_bl_params_from_mem_params_desc
();
bl_params_t
*
next_bl_params
=
get_next_bl_params_from_mem_params_desc
();
populate_next_bl_params_config
(
next_bl_params
);
return
next_bl_params
;
}
This diff is collapsed.
Click to expand it.
plat/arm/common/arm_io_storage.c
View file @
c7aa7fdf
/*
* Copyright (c) 2015-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -53,6 +53,14 @@ static const io_uuid_spec_t bl33_uuid_spec = {
.
uuid
=
UUID_NON_TRUSTED_FIRMWARE_BL33
,
};
static
const
io_uuid_spec_t
tb_fw_config_uuid_spec
=
{
.
uuid
=
UUID_TB_FW_CONFIG
,
};
static
const
io_uuid_spec_t
hw_config_uuid_spec
=
{
.
uuid
=
UUID_HW_CONFIG
,
};
#if TRUSTED_BOARD_BOOT
static
const
io_uuid_spec_t
tb_fw_cert_uuid_spec
=
{
.
uuid
=
UUID_TRUSTED_BOOT_FW_CERT
,
...
...
@@ -147,6 +155,16 @@ static const struct plat_io_policy policies[] = {
(
uintptr_t
)
&
bl33_uuid_spec
,
open_fip
},
[
TB_FW_CONFIG_ID
]
=
{
&
fip_dev_handle
,
(
uintptr_t
)
&
tb_fw_config_uuid_spec
,
open_fip
},
[
HW_CONFIG_ID
]
=
{
&
fip_dev_handle
,
(
uintptr_t
)
&
hw_config_uuid_spec
,
open_fip
},
#if TRUSTED_BOARD_BOOT
[
TRUSTED_BOOT_FW_CERT_ID
]
=
{
&
fip_dev_handle
,
...
...
This diff is collapsed.
Click to expand it.
plat/arm/common/sp_min/arm_sp_min_setup.c
View file @
c7aa7fdf
/*
* Copyright (c) 2016-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -18,7 +18,7 @@
static
entry_point_info_t
bl33_image_ep_info
;
/* Weak definitions may be overridden in specific ARM standard platform */
#pragma weak sp_min_early_platform_setup
#pragma weak sp_min_early_platform_setup
2
#pragma weak sp_min_platform_setup
#pragma weak sp_min_plat_arch_setup
...
...
@@ -48,8 +48,8 @@ entry_point_info_t *sp_min_plat_get_bl33_ep_info(void)
/*******************************************************************************
* Perform early platform setup.
******************************************************************************/
void
arm_sp_min_early_platform_setup
(
void
*
from_bl2
,
void
*
plat_params_from_bl2
)
void
arm_sp_min_early_platform_setup
(
void
*
from_bl2
,
uintptr_t
tos_fw_config
,
uintptr_t
hw_config
,
void
*
plat_params_from_bl2
)
{
/* Initialize the console to provide early debug support */
console_init
(
PLAT_ARM_BOOT_UART_BASE
,
PLAT_ARM_BOOT_UART_CLK_IN_HZ
,
...
...
@@ -105,10 +105,10 @@ void arm_sp_min_early_platform_setup(void *from_bl2,
}
void
sp_min_early_platform_setup
(
void
*
from_bl2
,
void
*
plat_params_from_bl2
)
void
sp_min_early_platform_setup
2
(
u_register_t
arg0
,
u_register_t
arg1
,
u_register_t
arg2
,
u_register_t
arg3
)
{
arm_sp_min_early_platform_setup
(
from_bl2
,
plat_params_from_bl2
);
arm_sp_min_early_platform_setup
(
(
void
*
)
arg0
,
arg1
,
arg2
,
(
void
*
)
arg3
);
/*
* Initialize Interconnect for this cluster during cold boot.
...
...
This diff is collapsed.
Click to expand it.
plat/arm/css/common/css_bl2_setup.c
View file @
c7aa7fdf
/*
* Copyright (c) 2015-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -60,9 +60,10 @@ int bl2_plat_handle_scp_bl2(image_info_t *scp_bl2_image_info)
static
unsigned
int
scp_boot_config
;
void
bl2_early_platform_setup
(
meminfo_t
*
mem_layout
)
void
bl2_early_platform_setup2
(
u_register_t
arg0
,
u_register_t
arg1
,
u_register_t
arg2
,
u_register_t
arg3
)
{
arm_bl2_early_platform_setup
(
mem_layout
);
arm_bl2_early_platform_setup
(
(
uintptr_t
)
arg0
,
(
meminfo_t
*
)
arg1
);
/* Save SCP Boot config before it gets overwritten by SCP_BL2 loading */
scp_boot_config
=
mmio_read_32
(
SCP_BOOT_CFG_ADDR
);
...
...
This diff is collapsed.
Click to expand it.
plat/common/aarch32/plat_common.c
View file @
c7aa7fdf
/*
* Copyright (c) 2016-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <console.h>
#include <platform.h>
#include <platform_sp_min.h>
#include <xlat_mmu_helpers.h>
/*
...
...
@@ -29,3 +30,14 @@ void sp_min_plat_runtime_setup(void)
*/
console_uninit
();
}
#if !ERROR_DEPRECATED
#pragma weak sp_min_early_platform_setup2
void
sp_min_early_platform_setup2
(
u_register_t
arg0
,
u_register_t
arg1
,
u_register_t
arg2
,
u_register_t
arg3
)
{
sp_min_early_platform_setup
((
void
*
)
arg0
,
(
void
*
)
arg1
);
}
#endif
This diff is collapsed.
Click to expand it.
plat/common/aarch64/plat_common.c
View file @
c7aa7fdf
/*
* Copyright (c) 2014-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2014-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -20,6 +20,7 @@
#pragma weak bl31_plat_runtime_setup
#if !ERROR_DEPRECATED
#pragma weak plat_get_syscnt_freq2
#pragma weak bl31_early_platform_setup2
#endif
/* ERROR_DEPRECATED */
#if SDEI_SUPPORT
...
...
@@ -70,6 +71,12 @@ unsigned int plat_get_syscnt_freq2(void)
return
(
unsigned
int
)
freq
;
}
void
bl31_early_platform_setup2
(
u_register_t
arg0
,
u_register_t
arg1
,
u_register_t
arg2
,
u_register_t
arg3
)
{
bl31_early_platform_setup
((
void
*
)
arg0
,
(
void
*
)
arg1
);
}
#endif
/* ERROR_DEPRECATED */
#if SDEI_SUPPORT
...
...
This diff is collapsed.
Click to expand it.
plat/common/plat_bl1_common.c
View file @
c7aa7fdf
/*
* Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015
-2018
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -7,8 +7,10 @@
#include <arch_helpers.h>
#include <assert.h>
#include <bl_common.h>
#include <bl1.h>
#include <debug.h>
#include <errno.h>
#include <platform.h>
#include <platform_def.h>
/*
...
...
@@ -21,6 +23,8 @@
#pragma weak bl1_plat_set_ep_info
#pragma weak bl1_plat_get_image_desc
#pragma weak bl1_plat_fwu_done
#pragma weak bl1_plat_handle_pre_image_load
#pragma weak bl1_plat_handle_post_image_load
unsigned
int
bl1_plat_get_next_image_id
(
void
)
...
...
@@ -35,6 +39,11 @@ void bl1_plat_set_ep_info(unsigned int image_id,
}
int
bl1_plat_handle_pre_image_load
(
unsigned
int
image_id
)
{
return
0
;
}
/*
* Following is the default definition that always
* returns BL2 image details.
...
...
@@ -62,3 +71,54 @@ int bl1_plat_mem_check(uintptr_t mem_base, unsigned int mem_size,
assert
(
0
);
return
-
ENOMEM
;
}
/*
* Default implementation for bl1_plat_handle_post_image_load(). This function
* populates the default arguments to BL2. The BL2 memory layout structure
* is allocated and the calculated layout is populated in arg1 to BL2.
*/
int
bl1_plat_handle_post_image_load
(
unsigned
int
image_id
)
{
meminfo_t
*
bl2_tzram_layout
;
meminfo_t
*
bl1_tzram_layout
;
image_desc_t
*
image_desc
;
entry_point_info_t
*
ep_info
;
if
(
image_id
!=
BL2_IMAGE_ID
)
return
0
;
/* Get the image descriptor */
image_desc
=
bl1_plat_get_image_desc
(
BL2_IMAGE_ID
);
assert
(
image_desc
!=
NULL
);
/* Get the entry point info */
ep_info
=
&
image_desc
->
ep_info
;
/* Find out how much free trusted ram remains after BL1 load */
bl1_tzram_layout
=
bl1_plat_sec_mem_layout
();
/*
* Create a new layout of memory for BL2 as seen by BL1 i.e.
* tell it the amount of total and free memory available.
* This layout is created at the first free address visible
* to BL2. BL2 will read the memory layout before using its
* memory for other purposes.
*/
#if LOAD_IMAGE_V2
bl2_tzram_layout
=
(
meminfo_t
*
)
bl1_tzram_layout
->
total_base
;
#else
bl2_tzram_layout
=
(
meminfo_t
*
)
bl1_tzram_layout
->
free_base
;
#endif
/* LOAD_IMAGE_V2 */
#if !ERROR_DEPRECATED
bl1_init_bl2_mem_layout
(
bl1_tzram_layout
,
bl2_tzram_layout
);
#else
bl1_calc_bl2_mem_layout
(
bl1_tzram_layout
,
bl2_tzram_layout
);
#endif
ep_info
->
args
.
arg1
=
(
uintptr_t
)
bl2_tzram_layout
;
VERBOSE
(
"BL1: BL2 memory layout address = %p
\n
"
,
(
void
*
)
bl2_tzram_layout
);
return
0
;
}
This diff is collapsed.
Click to expand it.
plat/common/plat_bl2_el3_common.c
deleted
100644 → 0
View file @
5ff6da94
/*
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <arch_helpers.h>
#include <assert.h>
#include <bl_common.h>
#include <debug.h>
#include <errno.h>
#include <platform_def.h>
/*
* The following platform functions are weakly defined. They
* are default implementations that allow BL2 to compile in
* absence of real definitions. The Platforms may override
* with more complex definitions.
*/
#pragma weak bl2_el3_plat_prepare_exit
void
bl2_el3_plat_prepare_exit
(
void
)
{
}
This diff is collapsed.
Click to expand it.
plat/common/plat
form_helpers_default
.c
→
plat/common/plat
_bl_common
.c
View file @
c7aa7fdf
/*
* Copyright (c)
2013-
2018, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <arch_helpers.h>
#include <assert.h>
#include <bl_common.h>
#include <debug.h>
#include <errno.h>
#include <platform.h>
/*
* Placeholder functions which can be redefined by each platfrom.
* The following platform functions are weakly defined. The Platforms
* may redefine with strong definition.
*/
#pragma weak bl2_el3_plat_prepare_exit
#pragma weak plat_error_handler
#pragma weak bl1_plat_handle_pre_image_load
#pragma weak bl1_plat_handle_post_image_load
#pragma weak bl2_plat_preload_setup
#pragma weak bl2_plat_handle_pre_image_load
#pragma weak bl2_plat_handle_post_image_load
#pragma weak plat_try_next_boot_source
void
__dead2
plat_error_handler
(
int
err
)
void
bl2_el3_plat_prepare_exit
(
void
)
{
while
(
1
)
wfi
();
}
int
bl1_plat_handle_pre_image_load
(
void
)
{
return
0
;
}
int
bl1_plat_handle_post_image_load
(
void
)
void
__dead2
plat_error_handler
(
int
err
)
{
return
0
;
while
(
1
)
wfi
();
}
void
bl2_plat_preload_setup
(
void
)
...
...
@@ -53,3 +50,17 @@ int plat_try_next_boot_source(void)
{
return
0
;
}
#if !ERROR_DEPRECATED
#pragma weak bl2_early_platform_setup2
/*
* The following platform API implementation that allow compatibility for
* the older platform APIs.
*/
void
bl2_early_platform_setup2
(
u_register_t
arg0
,
u_register_t
arg1
,
u_register_t
arg2
,
u_register_t
arg3
)
{
bl2_early_platform_setup
((
void
*
)
arg1
);
}
#endif
This diff is collapsed.
Click to expand it.
tools/cert_create/include/tbbr/tbb_ext.h
View file @
c7aa7fdf
/*
* Copyright (c) 2015-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -13,6 +13,8 @@ enum {
TRUSTED_FW_NVCOUNTER_EXT
,
NON_TRUSTED_FW_NVCOUNTER_EXT
,
TRUSTED_BOOT_FW_HASH_EXT
,
TRUSTED_BOOT_FW_CONFIG_HASH_EXT
,
HW_CONFIG_HASH_EXT
,
TRUSTED_WORLD_PK_EXT
,
NON_TRUSTED_WORLD_PK_EXT
,
SCP_FW_CONTENT_CERT_PK_EXT
,
...
...
This diff is collapsed.
Click to expand it.
tools/cert_create/src/tbbr/tbb_cert.c
View file @
c7aa7fdf
/*
* Copyright (c) 2015-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -26,9 +26,11 @@ static cert_t tbb_certs[] = {
.
issuer
=
TRUSTED_BOOT_FW_CERT
,
.
ext
=
{
TRUSTED_FW_NVCOUNTER_EXT
,
TRUSTED_BOOT_FW_HASH_EXT
TRUSTED_BOOT_FW_HASH_EXT
,
TRUSTED_BOOT_FW_CONFIG_HASH_EXT
,
HW_CONFIG_HASH_EXT
},
.
num_ext
=
2
.
num_ext
=
4
},
[
TRUSTED_KEY_CERT
]
=
{
.
id
=
TRUSTED_KEY_CERT
,
...
...
This diff is collapsed.
Click to expand it.
tools/cert_create/src/tbbr/tbb_ext.c
View file @
c7aa7fdf
/*
* Copyright (c) 2015-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -53,6 +53,26 @@ static ext_t tbb_ext[] = {
.
asn1_type
=
V_ASN1_OCTET_STRING
,
.
type
=
EXT_TYPE_HASH
},
[
TRUSTED_BOOT_FW_CONFIG_HASH_EXT
]
=
{
.
oid
=
TRUSTED_BOOT_FW_CONFIG_HASH_OID
,
.
opt
=
"tb-fw-config"
,
.
help_msg
=
"Trusted Boot Firmware Config file"
,
.
sn
=
"TrustedBootFirmwareConfigHash"
,
.
ln
=
"Trusted Boot Firmware Config hash"
,
.
asn1_type
=
V_ASN1_OCTET_STRING
,
.
type
=
EXT_TYPE_HASH
,
.
optional
=
1
},
[
HW_CONFIG_HASH_EXT
]
=
{
.
oid
=
HW_CONFIG_HASH_OID
,
.
opt
=
"hw-config"
,
.
help_msg
=
"HW Config file"
,
.
sn
=
"HWConfigHash"
,
.
ln
=
"HW Config hash"
,
.
asn1_type
=
V_ASN1_OCTET_STRING
,
.
type
=
EXT_TYPE_HASH
,
.
optional
=
1
},
[
TRUSTED_WORLD_PK_EXT
]
=
{
.
oid
=
TRUSTED_WORLD_PK_OID
,
.
sn
=
"TrustedWorldPublicKey"
,
...
...
This diff is collapsed.
Click to expand it.
tools/fiptool/tbbr_config.c
View file @
c7aa7fdf
/*
* Copyright (c) 2016-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-201
8
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -67,7 +67,17 @@ toc_entry_t toc_entries[] = {
.
uuid
=
UUID_NON_TRUSTED_FIRMWARE_BL33
,
.
cmdline_name
=
"nt-fw"
},
/* Dynamic Configs */
{
.
name
=
"HW_CONFIG"
,
.
uuid
=
UUID_HW_CONFIG
,
.
cmdline_name
=
"hw-config"
},
{
.
name
=
"TB_FW_CONFIG"
,
.
uuid
=
UUID_TB_FW_CONFIG
,
.
cmdline_name
=
"tb-fw-config"
},
/* Key Certificates */
{
.
name
=
"Root Of Trust key certificate"
,
...
...
This diff is collapsed.
Click to expand it.
Prev
1
2
3
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help