In the pl080 device, we don't implement "peripheral flow control", which is where the DMA engine can be programmed to transfer data until a source or destination peripheral tells it to stop. We currently call hw_error() if the guest tries to use this missing feature, which prints a register dump and aborts QEMU.
Change the hw_error() call to the LOG_UNIMP log-and-continue, which is how we prefer to report guest attempts to use unimplemented features these days. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3409 Signed-off-by: Peter Maydell <[email protected]> --- hw/dma/pl080.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c index 4a90c7bb27..f9f1e3e931 100644 --- a/hw/dma/pl080.c +++ b/hw/dma/pl080.c @@ -13,7 +13,6 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/dma/pl080.h" -#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "qapi/error.h" @@ -132,8 +131,9 @@ again: continue; flow = (ch->conf >> 11) & 7; if (flow >= 4) { - hw_error( - "pl080_run: Peripheral flow control not implemented\n"); + qemu_log_mask(LOG_UNIMP, + "pl080_run: Peripheral flow control not implemented\n"); + continue; } src_id = (ch->conf >> 1) & 0x1f; dest_id = (ch->conf >> 6) & 0x1f; -- 2.43.0
