@samitouri / QOSamiQemu / commits / 43fad6b3b2

hw/dma/pl080: Don't use hw_error() for unimplemented features

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 <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20260529143624.158935-3-peter.maydell@linaro.org

Peter Maydell committed May 29, 2026 at 15:36 UTC 43fad6b3b26665de255b692b775b2b75df9e6676
1 file changed +3 -3
hw/dma/pl080.c
+3 -3
@@ -13,7 +13,6 @@
13 #include "qemu/log.h"
14 #include "qemu/module.h"
15 #include "hw/dma/pl080.h"
16 -#include "hw/core/hw-error.h"
16 #include "hw/core/irq.h"
17 #include "hw/core/qdev-properties.h"
18 #include "qapi/error.h"
@@ -132,8 +131,9 @@ again:
131 continue;
132 flow = (ch->conf >> 11) & 7;
133 if (flow >= 4) {
135 - hw_error(
136 - "pl080_run: Peripheral flow control not implemented\n");
134 + qemu_log_mask(LOG_UNIMP,
135 + "pl080_run: Peripheral flow control not implemented\n");
136 + continue;
137 }
138 src_id = (ch->conf >> 1) & 0x1f;
139 dest_id = (ch->conf >> 6) & 0x1f;