Commit 97399821 authored by Louis Mayencourt's avatar Louis Mayencourt
Browse files

arm-io: Panic in case of io setup failure



Currently, an IO setup failure will be ignored on arm platform release
build. Change this to panic instead.

Change-Id: I027a045bce2422b0a0fc4ff9e9d4c6e7bf5d2f98
Signed-off-by: default avatarLouis Mayencourt <louis.mayencourt@arm.com>
parent d6dcbcad
...@@ -149,7 +149,7 @@ void arm_setup_romlib(void); ...@@ -149,7 +149,7 @@ void arm_setup_romlib(void);
#define ARM_ROTPK_DEVEL_ECDSA_ID 3 #define ARM_ROTPK_DEVEL_ECDSA_ID 3
/* IO storage utility functions */ /* IO storage utility functions */
void arm_io_setup(void); int arm_io_setup(void);
/* Security utility functions */ /* Security utility functions */
void arm_tzc400_setup(const arm_tzc_regions_info_t *tzc_regions); void arm_tzc400_setup(const arm_tzc_regions_info_t *tzc_regions);
......
/* /*
* Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2014-2020, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -120,18 +120,22 @@ void plat_arm_io_setup(void) ...@@ -120,18 +120,22 @@ void plat_arm_io_setup(void)
{ {
int io_result; int io_result;
arm_io_setup(); io_result = arm_io_setup();
if (io_result < 0) {
panic();
}
/* Register the additional IO devices on this platform */ /* Register the additional IO devices on this platform */
io_result = register_io_dev_sh(&sh_dev_con); io_result = register_io_dev_sh(&sh_dev_con);
assert(io_result == 0); if (io_result < 0) {
panic();
}
/* Open connections to devices and cache the handles */ /* Open connections to devices and cache the handles */
io_result = io_dev_open(sh_dev_con, (uintptr_t)NULL, &sh_dev_handle); io_result = io_dev_open(sh_dev_con, (uintptr_t)NULL, &sh_dev_handle);
assert(io_result == 0); if (io_result < 0) {
panic();
/* Ignore improbable errors in release builds */ }
(void)io_result;
} }
/* /*
......
...@@ -63,32 +63,41 @@ int open_memmap(const uintptr_t spec) ...@@ -63,32 +63,41 @@ int open_memmap(const uintptr_t spec)
return result; return result;
} }
void arm_io_setup(void) int arm_io_setup(void)
{ {
int io_result; int io_result;
io_result = register_io_dev_fip(&fip_dev_con); io_result = register_io_dev_fip(&fip_dev_con);
assert(io_result == 0); if (io_result < 0) {
return io_result;
}
io_result = register_io_dev_memmap(&memmap_dev_con); io_result = register_io_dev_memmap(&memmap_dev_con);
assert(io_result == 0); if (io_result < 0) {
return io_result;
}
/* Open connections to devices and cache the handles */ /* Open connections to devices and cache the handles */
io_result = io_dev_open(fip_dev_con, (uintptr_t)NULL, io_result = io_dev_open(fip_dev_con, (uintptr_t)NULL,
&fip_dev_handle); &fip_dev_handle);
assert(io_result == 0); if (io_result < 0) {
return io_result;
}
io_result = io_dev_open(memmap_dev_con, (uintptr_t)NULL, io_result = io_dev_open(memmap_dev_con, (uintptr_t)NULL,
&memmap_dev_handle); &memmap_dev_handle);
assert(io_result == 0);
/* Ignore improbable errors in release builds */ return io_result;
(void)io_result;
} }
void plat_arm_io_setup(void) void plat_arm_io_setup(void)
{ {
arm_io_setup(); int err;
err = arm_io_setup();
if (err < 0) {
panic();
}
} }
int plat_arm_get_alt_image_source( int plat_arm_get_alt_image_source(
......
...@@ -292,32 +292,41 @@ static int open_memmap(const uintptr_t spec) ...@@ -292,32 +292,41 @@ static int open_memmap(const uintptr_t spec)
} }
void arm_io_setup(void) int arm_io_setup(void)
{ {
int io_result; int io_result;
io_result = register_io_dev_fip(&fip_dev_con); io_result = register_io_dev_fip(&fip_dev_con);
assert(io_result == 0); if (io_result < 0) {
return io_result;
}
io_result = register_io_dev_memmap(&memmap_dev_con); io_result = register_io_dev_memmap(&memmap_dev_con);
assert(io_result == 0); if (io_result < 0) {
return io_result;
}
/* Open connections to devices and cache the handles */ /* Open connections to devices and cache the handles */
io_result = io_dev_open(fip_dev_con, (uintptr_t)NULL, io_result = io_dev_open(fip_dev_con, (uintptr_t)NULL,
&fip_dev_handle); &fip_dev_handle);
assert(io_result == 0); if (io_result < 0) {
return io_result;
}
io_result = io_dev_open(memmap_dev_con, (uintptr_t)NULL, io_result = io_dev_open(memmap_dev_con, (uintptr_t)NULL,
&memmap_dev_handle); &memmap_dev_handle);
assert(io_result == 0);
/* Ignore improbable errors in release builds */ return io_result;
(void)io_result;
} }
void plat_arm_io_setup(void) void plat_arm_io_setup(void)
{ {
arm_io_setup(); int err;
err = arm_io_setup();
if (err < 0) {
panic();
}
} }
int plat_arm_get_alt_image_source( int plat_arm_get_alt_image_source(
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment