diff options
-rw-r--r-- | core/lock.c | 4 | ||||
-rw-r--r-- | hw/fsp/fsp-op-panel.c | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/core/lock.c b/core/lock.c index 6a8282f..d916141 100644 --- a/core/lock.c +++ b/core/lock.c @@ -31,10 +31,10 @@ bool bust_locks = true; static void lock_error(struct lock *l, const char *reason, uint16_t err) { - op_display(OP_FATAL, OP_MOD_LOCK, err); - fprintf(stderr, "LOCK ERROR: %s @%p (state: 0x%016lx)\n", reason, l, l->lock_val); + op_display(OP_FATAL, OP_MOD_LOCK, err); + abort(); } diff --git a/hw/fsp/fsp-op-panel.c b/hw/fsp/fsp-op-panel.c index 0693939..18cdd28 100644 --- a/hw/fsp/fsp-op-panel.c +++ b/hw/fsp/fsp-op-panel.c @@ -63,7 +63,14 @@ void op_display(enum op_severity sev, enum op_module mod, uint16_t code) * in case of fatal errors */ fsp_fillmsg(&op_msg, FSP_CMD_DISP_SRC_DIRECT, 3, 1, w0, w1); - fsp_sync_msg(&op_msg, false); + + if (sev == OP_FATAL) { + if(fsp_queue_msg(&op_msg, NULL)) + prerror("Failed to queue FSP message for OP PANEL\n"); + } else { + fsp_sync_msg(&op_msg, false); + } + unlock(&op_lock); } |