aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSandrine Bailleux <sandrine.bailleux@arm.com>2018-11-08 14:10:18 +0100
committerSandrine Bailleux <sandrine.bailleux@arm.com>2018-12-13 16:07:05 +0100
commit750b7cca6af02a35e52eaf012b32f1f11dc18ceb (patch)
tree857aab92ded199a089919bb4fb6e519483dcf11d /lib
parent411a6b26f73dfb85143603cdad09588b8e159b04 (diff)
downloadtf-a-tests-750b7cca6af02a35e52eaf012b32f1f11dc18ceb.tar.gz
Do not print CPU MPID in mp_printf()
mp_printf() should just be an MP-safe version of printf(), i.e. one that takes the console lock before printing. It should not be responsible for printing the CPU MPID as well, this decision should be left to the caller. Also make Cactus and Ivy use mp_printf(). Before that, they could not call this function because they couldn't access the MPIDR_EL1 as S-EL0 images. Change-Id: I4eafee01ffc279296395b94dd4a07cfbb8e858e2 Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/utils/mp_printf.c47
1 files changed, 4 insertions, 43 deletions
diff --git a/lib/utils/mp_printf.c b/lib/utils/mp_printf.c
index 27a93aca..777c736a 100644
--- a/lib/utils/mp_printf.c
+++ b/lib/utils/mp_printf.c
@@ -4,8 +4,6 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#include <arch_helpers.h>
-#include <platform.h>
#include <spinlock.h>
#include <stdarg.h>
#include <stdio.h>
@@ -13,51 +11,14 @@
/* Lock to avoid concurrent accesses to the serial console */
static spinlock_t printf_lock;
-/*
- * Print the MPID header, e.g.: [cpu 0x0100]
- *
- * If SHELL_COLOR == 1, this also prints shell's color escape sequences to ease
- * identifying which CPU displays the message. There are 8 standard colors so
- * if the platform has more than 8 CPUs, some colors will be reused.
- */
-#if SHELL_COLOR
-#define PRINT_MPID_HDR(_mpid) \
- do { \
- unsigned int linear_id = platform_get_core_pos(_mpid); \
- printf("\033[1;%u;40m", 30 + (linear_id & 0x7)); \
- printf("[cpu 0x%.4x] ", _mpid); \
- printf("\033[0m"); \
- } while (0)
-#else
-#define PRINT_MPID_HDR(_mpid) \
- printf("[cpu 0x%.4x] ", _mpid)
-#endif /* SHELL_COLOR */
-
void mp_printf(const char *fmt, ...)
{
- /*
- * As part of testing Firmware Update feature on Cortex-A57 CPU, an
- * issue was discovered while printing in NS_BL1U stage. The issue
- * appears when the second call to `NOTICE()` is made in the
- * `ns_bl1u_main()`. As a result of this issue the CPU hangs and the
- * debugger is also not able to connect anymore.
- *
- * After further debugging and experiments it was found that if
- * `read_mpidr_el1()` is avoided or volatile qualifier is used for
- * reading the mpidr, this issue gets resolved.
- *
- * NOTE: The actual/real reason why this happens is still not known.
- * Moreover this problem is not encountered on Cortex-A53 CPU.
- */
- volatile unsigned int mpid = read_mpidr_el1() & 0xFFFF;
-
- va_list ap;
- va_start(ap, fmt);
+ va_list args;
+ va_start(args, fmt);
spin_lock(&printf_lock);
- PRINT_MPID_HDR(mpid);
- vprintf(fmt, ap);
+ vprintf(fmt, args);
spin_unlock(&printf_lock);
- va_end(ap);
+ va_end(args);
}