diff options
Diffstat (limited to 'lib/utils/mp_printf.c')
-rw-r--r-- | lib/utils/mp_printf.c | 15 |
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 |