qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-ppc] [PATCH v2 38/39] hw/dma/i82374: avoid multiple creations on t


From: Philippe Mathieu-Daudé
Subject: [Qemu-ppc] [PATCH v2 38/39] hw/dma/i82374: avoid multiple creations on the same ISA bus
Date: Mon, 16 Oct 2017 21:12:08 -0300

$ ./ppc64-softmmu/qemu-system-ppc64 -S -machine 40p,accel=tcg -device i82374
qemu-system-ppc64: -device i82374: DMA already initialized on ISA bus

Reported-by: Eduardo Otubo <address@hidden>
Suggested-by: Eduardo Habkost <address@hidden>
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
 hw/dma/i82374.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
index 6c0f975df0..280e64f0fa 100644
--- a/hw/dma/i82374.c
+++ b/hw/dma/i82374.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qapi/error.h"
 #include "hw/isa/isa.h"
 
 #define TYPE_I82374 "i82374"
@@ -117,13 +118,19 @@ static const MemoryRegionPortio i82374_portio_list[] = {
 static void i82374_realize(DeviceState *dev, Error **errp)
 {
     I82374State *s = I82374(dev);
+    ISABus *isa_bus = isa_bus_from_device(ISA_DEVICE(dev));
+
+    if (isa_bus->dma[0] || isa_bus->dma[1]) {
+        error_setg(errp, "DMA already initialized on ISA bus");
+        return;
+    }
 
     portio_list_init(&s->port_list, OBJECT(s), i82374_portio_list, s,
                      "i82374");
     portio_list_add(&s->port_list, isa_address_space_io(&s->parent_obj),
                     s->iobase);
 
-    DMA_init(isa_bus_from_device(ISA_DEVICE(dev)), 1);
+    DMA_init(isa_bus, 1);
     memset(s->commands, 0, sizeof(s->commands));
 }
 
-- 
2.15.0.rc0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]