[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 6/6] hw/char: cadence_uart: Log a guest error when device is u
From: |
Bin Meng |
Subject: |
[PATCH v3 6/6] hw/char: cadence_uart: Log a guest error when device is unclocked or in reset |
Date: |
Wed, 1 Sep 2021 20:45:21 +0800 |
We've got SW that expects FSBL (Bootlooader) to setup clocks and
resets. It's quite common that users run that SW on QEMU without
FSBL (FSBL typically requires the Xilinx tools installed). That's
fine, since users can stil use -device loader to enable clocks etc.
To help folks understand what's going, a log (guest-error) message
would be helpful here. In particular with the serial port since
things will go very quiet if they get things wrong.
Suggested-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---
Changes in v3:
- new patch: hw/char: cadence_uart: Log a guest error when unclocked or in reset
hw/char/cadence_uart.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
index 5f5a4645ac..c069a30842 100644
--- a/hw/char/cadence_uart.c
+++ b/hw/char/cadence_uart.c
@@ -240,6 +240,8 @@ static int uart_can_receive(void *opaque)
/* ignore characters when unclocked or in reset */
if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) {
+ qemu_log_mask(LOG_GUEST_ERROR, "%s: uart is unclocked or in reset\n",
+ __func__);
return 0;
}
@@ -376,6 +378,8 @@ static void uart_event(void *opaque, QEMUChrEvent event)
/* ignore characters when unclocked or in reset */
if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) {
+ qemu_log_mask(LOG_GUEST_ERROR, "%s: uart is unclocked or in reset\n",
+ __func__);
return;
}
@@ -413,6 +417,8 @@ static MemTxResult uart_write(void *opaque, hwaddr offset,
/* ignore access when unclocked or in reset */
if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) {
+ qemu_log_mask(LOG_GUEST_ERROR, "%s: uart is unclocked or in reset\n",
+ __func__);
return MEMTX_ERROR;
}
@@ -478,6 +484,8 @@ static MemTxResult uart_read(void *opaque, hwaddr offset,
/* ignore access when unclocked or in reset */
if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) {
+ qemu_log_mask(LOG_GUEST_ERROR, "%s: uart is unclocked or in reset\n",
+ __func__);
return MEMTX_ERROR;
}
--
2.25.1
- [PATCH v3 0/6] hw/arm: xilinx_zynq: Fix upstream U-Boot boot failure, Bin Meng, 2021/09/01
- [PATCH v3 1/6] hw/misc: zynq_slcr: Correctly compute output clocks in the reset exit phase, Bin Meng, 2021/09/01
- [PATCH v3 2/6] hw/char: cadence_uart: Disable transmit when input clock is disabled, Bin Meng, 2021/09/01
- [PATCH v3 3/6] hw/char: cadence_uart: Move clock/reset check to uart_can_receive(), Bin Meng, 2021/09/01
- [PATCH v3 4/6] hw/char: cadence_uart: Convert to memop_with_attrs() ops, Bin Meng, 2021/09/01
- [PATCH v3 5/6] hw/char: cadence_uart: Ignore access when unclocked or in reset for uart_{read, write}(), Bin Meng, 2021/09/01
- [PATCH v3 6/6] hw/char: cadence_uart: Log a guest error when device is unclocked or in reset,
Bin Meng <=
- Re: [PATCH v3 0/6] hw/arm: xilinx_zynq: Fix upstream U-Boot boot failure, Edgar E. Iglesias, 2021/09/02