summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/utils/mp_printf.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/utils/mp_printf.c b/lib/utils/mp_printf.c
index a838fc6..d66ecb9 100644
--- a/lib/utils/mp_printf.c
+++ b/lib/utils/mp_printf.c
@@ -61,7 +61,20 @@ void mp_printf(const char *fmt, ...)
{
va_list ap;
char str[256];
- unsigned int mpid = read_mpidr_el1() & 0xFFFF;
+ /*
+ * As part of testing Firmware Update feature on 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(GENFW-1254).
+ *
+ * NOTE: The actual/real reason why this happens is still not known.
+ * Moreover this problem is not encountered on A53 CPU.
+ */
+ volatile unsigned int mpid = read_mpidr_el1() & 0xFFFF;
/*
* TODO: It would be simpler to use vprintf() instead of