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: Louis Mayencourt <louis.mayencourt@arm.com>
This commit is contained in:
Louis Mayencourt 2020-01-29 14:43:06 +00:00
parent d6dcbcad18
commit 9739982125
4 changed files with 46 additions and 24 deletions

View file

@ -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);

View file

@ -1,5 +1,5 @@
/* /*
* 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)
{ {
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;
} }
/* /*

View file

@ -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(

View file

@ -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(