[PATCH 07/35] hw/dma: QOM-ify AddressSpace

Akihiko Odaki posted 35 patches 1 month, 4 weeks ago
[PATCH 07/35] hw/dma: QOM-ify AddressSpace
Posted by Akihiko Odaki 1 month, 4 weeks ago
Make AddressSpaces QOM objects to ensure that they are destroyed when
their owners are finalized and also to get a unique path for debugging
output.

The name arguments were used to distinguish AddresSpaces in debugging
output, but they will represent property names after QOM-ification and
debugging output will show QOM paths. So change them to make them more
concise and also avoid conflicts with other properties.

Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
---
 hw/dma/bcm2835_dma.c   | 2 +-
 hw/dma/pl080.c         | 3 +--
 hw/dma/pl330.c         | 3 +--
 hw/dma/rc4030.c        | 5 ++---
 hw/dma/xilinx_axidma.c | 4 ++--
 hw/dma/xlnx-zdma.c     | 2 +-
 hw/dma/xlnx_csu_dma.c  | 2 +-
 7 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/hw/dma/bcm2835_dma.c b/hw/dma/bcm2835_dma.c
index ebef56d8d613..8ff266c48882 100644
--- a/hw/dma/bcm2835_dma.c
+++ b/hw/dma/bcm2835_dma.c
@@ -380,7 +380,7 @@ static void bcm2835_dma_realize(DeviceState *dev, Error **errp)
 
     obj = object_property_get_link(OBJECT(dev), "dma-mr", &error_abort);
     s->dma_mr = MEMORY_REGION(obj);
-    address_space_init(&s->dma_as, NULL, s->dma_mr, TYPE_BCM2835_DMA "-memory");
+    address_space_init(&s->dma_as, OBJECT(s), s->dma_mr,  "as");
 
     bcm2835_dma_reset(dev);
 }
diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c
index cf02a484d6a6..1b6e9f741330 100644
--- a/hw/dma/pl080.c
+++ b/hw/dma/pl080.c
@@ -398,8 +398,7 @@ static void pl080_realize(DeviceState *dev, Error **errp)
         return;
     }
 
-    address_space_init(&s->downstream_as, NULL, s->downstream,
-                       "pl080-downstream");
+    address_space_init(&s->downstream_as, OBJECT(s), s->downstream, "as");
 }
 
 static void pl081_init(Object *obj)
diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c
index 4733799f4045..e9bf8f86ee5a 100644
--- a/hw/dma/pl330.c
+++ b/hw/dma/pl330.c
@@ -1569,8 +1569,7 @@ static void pl330_realize(DeviceState *dev, Error **errp)
         s->mem_as = &address_space_memory;
     } else {
         s->mem_as = g_new0(AddressSpace, 1);
-        address_space_init(s->mem_as, NULL, s->mem_mr,
-                           memory_region_name(s->mem_mr));
+        address_space_init(s->mem_as, OBJECT(s), s->mem_mr, "as");
     }
 
     s->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, pl330_exec_cycle_timer, s);
diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c
index cf76f90f4d3b..65f2c7f1bd19 100644
--- a/hw/dma/rc4030.c
+++ b/hw/dma/rc4030.c
@@ -688,8 +688,7 @@ static void rc4030_realize(DeviceState *dev, Error **errp)
     memory_region_init_iommu(&s->dma_mr, sizeof(s->dma_mr),
                              TYPE_RC4030_IOMMU_MEMORY_REGION,
                              o, "rc4030.dma", 4 * GiB);
-    address_space_init(&s->dma_as, NULL, MEMORY_REGION(&s->dma_mr),
-                       "rc4030-dma");
+    address_space_init(&s->dma_as, o, MEMORY_REGION(&s->dma_mr), "as");
 }
 
 static void rc4030_unrealize(DeviceState *dev)
@@ -698,7 +697,7 @@ static void rc4030_unrealize(DeviceState *dev)
 
     timer_free(s->periodic_timer);
 
-    address_space_destroy(&s->dma_as);
+    object_unparent(OBJECT(&s->dma_as));
     object_unparent(OBJECT(&s->dma_mr));
 }
 
diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c
index 0f340abc2c6f..5f85b686fd18 100644
--- a/hw/dma/xilinx_axidma.c
+++ b/hw/dma/xilinx_axidma.c
@@ -588,8 +588,8 @@ static void xilinx_axidma_realize(DeviceState *dev, Error **errp)
         ptimer_transaction_commit(st->ptimer);
     }
 
-    address_space_init(&s->as, NULL,
-                       s->dma_mr ? s->dma_mr : get_system_memory(), "dma");
+    address_space_init(&s->as, OBJECT(s),
+                       s->dma_mr ? s->dma_mr : get_system_memory(), "as");
 }
 
 static void xilinx_axidma_init(Object *obj)
diff --git a/hw/dma/xlnx-zdma.c b/hw/dma/xlnx-zdma.c
index 9b9ccd1e3c08..ad93bab5d4fa 100644
--- a/hw/dma/xlnx-zdma.c
+++ b/hw/dma/xlnx-zdma.c
@@ -769,7 +769,7 @@ static void zdma_realize(DeviceState *dev, Error **errp)
         error_setg(errp, TYPE_XLNX_ZDMA " 'dma' link not set");
         return;
     }
-    address_space_init(&s->dma_as, NULL, s->dma_mr, "zdma-dma");
+    address_space_init(&s->dma_as, OBJECT(s), s->dma_mr, "as");
 
     for (i = 0; i < ARRAY_SIZE(zdma_regs_info); ++i) {
         RegisterInfo *r = &s->regs_info[zdma_regs_info[i].addr / 4];
diff --git a/hw/dma/xlnx_csu_dma.c b/hw/dma/xlnx_csu_dma.c
index 8b88392bb92b..8a0ec5bc5b94 100644
--- a/hw/dma/xlnx_csu_dma.c
+++ b/hw/dma/xlnx_csu_dma.c
@@ -653,7 +653,7 @@ static void xlnx_csu_dma_realize(DeviceState *dev, Error **errp)
         error_setg(errp, TYPE_XLNX_CSU_DMA " 'dma' link not set");
         return;
     }
-    address_space_init(&s->dma_as, NULL, s->dma_mr, "csu-dma");
+    address_space_init(&s->dma_as, OBJECT(s), s->dma_mr, "as");
 
     reg_array =
         register_init_block32(dev, xlnx_csu_dma_regs_info[!!s->is_dst],

-- 
2.51.0