diff options
Diffstat (limited to 'plat/rockchip')
-rw-r--r-- | plat/rockchip/common/bl31_plat_setup.c | 2 | ||||
-rw-r--r-- | plat/rockchip/common/drivers/parameter/ddr_parameter.h | 4 | ||||
-rw-r--r-- | plat/rockchip/common/params_setup.c | 22 | ||||
-rw-r--r-- | plat/rockchip/common/rockchip_stack_protector.c | 24 | ||||
-rw-r--r-- | plat/rockchip/common/sp_min_plat_setup.c | 4 | ||||
-rw-r--r-- | plat/rockchip/px30/platform.mk | 5 | ||||
-rw-r--r-- | plat/rockchip/rk3328/platform.mk | 4 | ||||
-rw-r--r-- | plat/rockchip/rk3368/include/platform_def.h | 4 | ||||
-rw-r--r-- | plat/rockchip/rk3368/platform.mk | 4 | ||||
-rw-r--r-- | plat/rockchip/rk3399/platform.mk | 17 |
10 files changed, 72 insertions, 18 deletions
diff --git a/plat/rockchip/common/bl31_plat_setup.c b/plat/rockchip/common/bl31_plat_setup.c index 11321d773..881625e4c 100644 --- a/plat/rockchip/common/bl31_plat_setup.c +++ b/plat/rockchip/common/bl31_plat_setup.c @@ -55,7 +55,7 @@ void params_early_setup(u_register_t plat_param_from_bl2) void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t arg3) { - static console_16550_t console; + static console_t console; struct rockchip_bl31_params *arg_from_bl2 = (struct rockchip_bl31_params *) arg0; params_early_setup(arg1); diff --git a/plat/rockchip/common/drivers/parameter/ddr_parameter.h b/plat/rockchip/common/drivers/parameter/ddr_parameter.h index 61349c44c..25c93a191 100644 --- a/plat/rockchip/common/drivers/parameter/ddr_parameter.h +++ b/plat/rockchip/common/drivers/parameter/ddr_parameter.h @@ -35,8 +35,8 @@ struct param_ddr_usage { uint64_t ns_top[DDR_REGION_NR_MAX]; uint32_t s_nr; - uint64_t s_base[DDR_REGION_NR_MAX]; - uint64_t s_top[DDR_REGION_NR_MAX]; + uint64_t s_base[DDR_REGION_NR_MAX + 1]; + uint64_t s_top[DDR_REGION_NR_MAX + 1]; }; struct param_ddr_usage ddr_region_usage_parse(uint64_t addr, uint64_t max_mb); diff --git a/plat/rockchip/common/params_setup.c b/plat/rockchip/common/params_setup.c index b2fd2011e..aec53eee2 100644 --- a/plat/rockchip/common/params_setup.c +++ b/plat/rockchip/common/params_setup.c @@ -37,7 +37,8 @@ static int dt_process_fdt(u_register_t param_from_bl2) static uint32_t rk_uart_base = PLAT_RK_UART_BASE; static uint32_t rk_uart_baudrate = PLAT_RK_UART_BAUDRATE; static uint32_t rk_uart_clock = PLAT_RK_UART_CLOCK; -static uint8_t fdt_buffer[0x10000]; +#define FDT_BUFFER_SIZE 0x20000 +static uint8_t fdt_buffer[FDT_BUFFER_SIZE]; void *plat_get_fdt(void) { @@ -136,7 +137,7 @@ static int dt_process_fdt(u_register_t param_from_bl2) void *fdt = plat_get_fdt(); int ret; - ret = fdt_open_into((void *)param_from_bl2, fdt, 0x10000); + ret = fdt_open_into((void *)param_from_bl2, fdt, FDT_BUFFER_SIZE); if (ret < 0) return ret; @@ -229,12 +230,27 @@ static bool rk_aux_param_handler(struct bl_aux_param_header *param) void params_early_setup(u_register_t plat_param_from_bl2) { + int ret; + /* * Test if this is a FDT passed as a platform-specific parameter * block. */ - if (!dt_process_fdt(plat_param_from_bl2)) + ret = dt_process_fdt(plat_param_from_bl2); + if (!ret) { + return; + } else if (ret != -FDT_ERR_BADMAGIC) { + /* + * If we found an FDT but couldn't parse it (e.g. corrupt, not + * enough space), return and don't attempt to parse the param + * as something else, since we know that will also fail. All + * we're doing is setting up UART, this doesn't need to be + * fatal. + */ + WARN("%s: found FDT but could not parse: error %d\n", + __func__, ret); return; + } bl_aux_params_parse(plat_param_from_bl2, rk_aux_param_handler); } diff --git a/plat/rockchip/common/rockchip_stack_protector.c b/plat/rockchip/common/rockchip_stack_protector.c new file mode 100644 index 000000000..18989779e --- /dev/null +++ b/plat/rockchip/common/rockchip_stack_protector.c @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <stdint.h> + +#include <arch_helpers.h> +#include <plat/common/platform.h> + +#define RANDOM_CANARY_VALUE ((u_register_t) 3288484550995823360ULL) + +u_register_t plat_get_stack_protector_canary(void) +{ + /* + * Ideally, a random number should be returned instead of the + * combination of a timer's value and a compile-time constant. + * As the virt platform does not have any random number generator, + * this is better than nothing but not necessarily really secure. + */ + return RANDOM_CANARY_VALUE ^ read_cntpct_el0(); +} + diff --git a/plat/rockchip/common/sp_min_plat_setup.c b/plat/rockchip/common/sp_min_plat_setup.c index 3f8767ecb..0f104ef61 100644 --- a/plat/rockchip/common/sp_min_plat_setup.c +++ b/plat/rockchip/common/sp_min_plat_setup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -51,7 +51,7 @@ unsigned int plat_is_my_cpu_primary(void); void sp_min_early_platform_setup2(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t arg3) { - static console_16550_t console; + static console_t console; struct rockchip_bl31_params *arg_from_bl2 = (struct rockchip_bl31_params *) arg0; params_early_setup(arg1); diff --git a/plat/rockchip/px30/platform.mk b/plat/rockchip/px30/platform.mk index 87cf18704..e2b497685 100644 --- a/plat/rockchip/px30/platform.mk +++ b/plat/rockchip/px30/platform.mk @@ -36,8 +36,11 @@ PLAT_BL_COMMON_SOURCES := lib/bl_aux_params/bl_aux_params.c \ lib/xlat_tables/aarch64/xlat_tables.c \ plat/common/plat_psci_common.c +ifneq (${ENABLE_STACK_PROTECTOR},0) +PLAT_BL_COMMON_SOURCES += ${RK_PLAT_COMMON}/rockchip_stack_protector.c +endif + BL31_SOURCES += ${RK_GIC_SOURCES} \ - common/desc_image_load.c \ drivers/arm/cci/cci.c \ drivers/delay_timer/delay_timer.c \ drivers/delay_timer/generic_delay_timer.c \ diff --git a/plat/rockchip/rk3328/platform.mk b/plat/rockchip/rk3328/platform.mk index fef459855..bbf351995 100644 --- a/plat/rockchip/rk3328/platform.mk +++ b/plat/rockchip/rk3328/platform.mk @@ -34,6 +34,10 @@ PLAT_BL_COMMON_SOURCES := lib/bl_aux_params/bl_aux_params.c \ plat/common/aarch64/crash_console_helpers.S \ plat/common/plat_psci_common.c +ifneq (${ENABLE_STACK_PROTECTOR},0) +PLAT_BL_COMMON_SOURCES += ${RK_PLAT_COMMON}/rockchip_stack_protector.c +endif + BL31_SOURCES += ${RK_GIC_SOURCES} \ drivers/arm/cci/cci.c \ drivers/ti/uart/aarch64/16550_console.S \ diff --git a/plat/rockchip/rk3368/include/platform_def.h b/plat/rockchip/rk3368/include/platform_def.h index 12115b4f0..519a025c9 100644 --- a/plat/rockchip/rk3368/include/platform_def.h +++ b/plat/rockchip/rk3368/include/platform_def.h @@ -48,7 +48,7 @@ PLATFORM_CLUSTER_COUNT + \ PLATFORM_CORE_COUNT) -#define PLAT_RK_CLST_TO_CPUID_SHIFT 8 +#define PLAT_RK_CLST_TO_CPUID_SHIFT 6 #define PLAT_MAX_PWR_LVL MPIDR_AFFLVL2 @@ -86,7 +86,7 @@ #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32) #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32) #define MAX_XLAT_TABLES 8 -#define MAX_MMAP_REGIONS 16 +#define MAX_MMAP_REGIONS 20 /******************************************************************************* * Declarations and constants to access the mailboxes safely. Each mailbox is diff --git a/plat/rockchip/rk3368/platform.mk b/plat/rockchip/rk3368/platform.mk index 8812378b1..ce93c6839 100644 --- a/plat/rockchip/rk3368/platform.mk +++ b/plat/rockchip/rk3368/platform.mk @@ -32,6 +32,10 @@ PLAT_BL_COMMON_SOURCES := lib/bl_aux_params/bl_aux_params.c \ plat/common/aarch64/crash_console_helpers.S \ plat/common/plat_psci_common.c +ifneq (${ENABLE_STACK_PROTECTOR},0) +PLAT_BL_COMMON_SOURCES += ${RK_PLAT_COMMON}/rockchip_stack_protector.c +endif + BL31_SOURCES += ${RK_GIC_SOURCES} \ drivers/arm/cci/cci.c \ drivers/ti/uart/aarch64/16550_console.S \ diff --git a/plat/rockchip/rk3399/platform.mk b/plat/rockchip/rk3399/platform.mk index d58215dcf..dad9f4d96 100644 --- a/plat/rockchip/rk3399/platform.mk +++ b/plat/rockchip/rk3399/platform.mk @@ -1,5 +1,5 @@ # -# Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved. +# Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved. # # SPDX-License-Identifier: BSD-3-Clause # @@ -24,20 +24,23 @@ PLAT_INCLUDES := -I${RK_PLAT_COMMON}/ \ -I${RK_PLAT_SOC}/include/ \ -I${RK_PLAT_SOC}/include/shared/ \ -RK_GIC_SOURCES := drivers/arm/gic/common/gic_common.c \ - drivers/arm/gic/v3/arm_gicv3_common.c \ - drivers/arm/gic/v3/gic500.c \ - drivers/arm/gic/v3/gicv3_main.c \ - drivers/arm/gic/v3/gicv3_helpers.c \ +# Include GICv3 driver files +include drivers/arm/gic/v3/gicv3.mk + +RK_GIC_SOURCES := ${GICV3_SOURCES} \ plat/common/plat_gicv3.c \ ${RK_PLAT}/common/rockchip_gicv3.c -PLAT_BL_COMMON_SOURCES := lib/bl_aux_params/bl_aux_params.c \ +PLAT_BL_COMMON_SOURCES := lib/bl_aux_params/bl_aux_params.c \ lib/xlat_tables/xlat_tables_common.c \ lib/xlat_tables/aarch64/xlat_tables.c \ plat/common/aarch64/crash_console_helpers.S \ plat/common/plat_psci_common.c +ifneq (${ENABLE_STACK_PROTECTOR},0) +PLAT_BL_COMMON_SOURCES += ${RK_PLAT_COMMON}/rockchip_stack_protector.c +endif + BL31_SOURCES += ${RK_GIC_SOURCES} \ drivers/arm/cci/cci.c \ drivers/ti/uart/aarch64/16550_console.S \ |