qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 41/66] piolist: add owner argument to initialization functions and pass devices
Date: Thu,  4 Jul 2013 17:13:37 +0200	[thread overview]
Message-ID: <1372950842-32422-42-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1372950842-32422-1-git-send-email-pbonzini@redhat.com>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/audio/adlib.c        | 2 +-
 hw/display/qxl.c        | 3 ++-
 hw/display/vga.c        | 4 ++--
 hw/dma/i82374.c         | 2 +-
 hw/isa/isa-bus.c        | 2 +-
 hw/isa/vt82c686.c       | 2 +-
 hw/ppc/prep.c           | 2 +-
 hw/watchdog/wdt_ib700.c | 2 +-
 include/exec/ioport.h   | 4 +++-
 ioport.c                | 6 ++++--
 10 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/hw/audio/adlib.c b/hw/audio/adlib.c
index 8b9b81e..f72e6ee 100644
--- a/hw/audio/adlib.c
+++ b/hw/audio/adlib.c
@@ -349,7 +349,7 @@ static void adlib_realizefn (DeviceState *dev, Error **errp)
 
     adlib_portio_list[1].offset = s->port;
     adlib_portio_list[2].offset = s->port + 8;
-    portio_list_init (port_list, adlib_portio_list, s, "adlib");
+    portio_list_init (port_list, OBJECT(s), adlib_portio_list, s, "adlib");
     portio_list_add (port_list, isa_address_space_io(&s->parent_obj), 0);
 }
 
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 59925ec..3804fe2 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -2070,7 +2070,8 @@ static int qxl_init_primary(PCIDevice *dev)
     vga_common_init(vga, OBJECT(dev));
     vga_init(vga, OBJECT(dev),
              pci_address_space(dev), pci_address_space_io(dev), false);
-    portio_list_init(qxl_vga_port_list, qxl_vga_portio_list, vga, "vga");
+    portio_list_init(qxl_vga_port_list, OBJECT(dev), qxl_vga_portio_list,
+                     vga, "vga");
     portio_list_add(qxl_vga_port_list, pci_address_space_io(dev), 0x3b0);
 
     vga->con = graphic_console_init(DEVICE(dev), &qxl_ops, qxl);
diff --git a/hw/display/vga.c b/hw/display/vga.c
index 1657356..06f44a8 100644
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -2372,11 +2372,11 @@ void vga_init(VGACommonState *s, Object *obj, MemoryRegion *address_space,
                                         1);
     memory_region_set_coalescing(vga_io_memory);
     if (init_vga_ports) {
-        portio_list_init(vga_port_list, vga_ports, s, "vga");
+        portio_list_init(vga_port_list, obj, vga_ports, s, "vga");
         portio_list_add(vga_port_list, address_space_io, 0x3b0);
     }
     if (vbe_ports) {
-        portio_list_init(vbe_port_list, vbe_ports, s, "vbe");
+        portio_list_init(vbe_port_list, obj, vbe_ports, s, "vbe");
         portio_list_add(vbe_port_list, address_space_io, 0x1ce);
     }
 }
diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
index ecda5cb..a5b891f 100644
--- a/hw/dma/i82374.c
+++ b/hw/dma/i82374.c
@@ -139,7 +139,7 @@ static void i82374_isa_realize(DeviceState *dev, Error **errp)
     I82374State *s = &isa->state;
     PortioList *port_list = g_new(PortioList, 1);
 
-    portio_list_init(port_list, i82374_portio_list, s, "i82374");
+    portio_list_init(port_list, OBJECT(isa), i82374_portio_list, s, "i82374");
     portio_list_add(port_list, isa_address_space_io(&isa->parent_obj),
                     isa->iobase);
 
diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 136d17e..cfd610c 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -115,7 +115,7 @@ void isa_register_portio_list(ISADevice *dev, uint16_t start,
        actually handled e.g. the FDC device.  */
     isa_init_ioport(dev, start);
 
-    portio_list_init(piolist, pio_start, opaque, name);
+    portio_list_init(piolist, OBJECT(dev), pio_start, opaque, name);
     portio_list_add(piolist, isabus->address_space_io, start);
 }
 
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 1f63197..19c887d 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -443,7 +443,7 @@ static int vt82c686b_initfn(PCIDevice *d)
        }
     }
 
-    memory_region_init_io(&vt82c->superio, NULL, &superio_ops,
+    memory_region_init_io(&vt82c->superio, OBJECT(d), &superio_ops,
                           &vt82c->superio_conf, "superio", 2);
     memory_region_set_enabled(&vt82c->superio, false);
     /* The floppy also uses 0x3f0 and 0x3f1.
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 899aa30..0081c70 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -653,7 +653,7 @@ static void ppc_prep_init(QEMUMachineInitArgs *args)
 
     sysctrl->reset_irq = first_cpu->irq_inputs[PPC6xx_INPUT_HRESET];
 
-    portio_list_init(port_list, prep_portio_list, sysctrl, "prep");
+    portio_list_init(port_list, NULL, prep_portio_list, sysctrl, "prep");
     portio_list_add(port_list, get_system_io(), 0x0);
 
     /* PowerPC control and status register group */
diff --git a/hw/watchdog/wdt_ib700.c b/hw/watchdog/wdt_ib700.c
index 597a923..c788554 100644
--- a/hw/watchdog/wdt_ib700.c
+++ b/hw/watchdog/wdt_ib700.c
@@ -112,7 +112,7 @@ static void wdt_ib700_realize(DeviceState *dev, Error **errp)
 
     s->timer = qemu_new_timer_ns(vm_clock, ib700_timer_expired, s);
 
-    portio_list_init(port_list, wdt_portio_list, s, "ib700");
+    portio_list_init(port_list, OBJECT(s), wdt_portio_list, s, "ib700");
     portio_list_add(port_list, isa_address_space_io(&s->parent_obj), 0);
 }
 
diff --git a/include/exec/ioport.h b/include/exec/ioport.h
index 6fb237d..bdd4e96 100644
--- a/include/exec/ioport.h
+++ b/include/exec/ioport.h
@@ -25,6 +25,7 @@
 #define IOPORT_H
 
 #include "qemu-common.h"
+#include "qom/object.h"
 #include "exec/memory.h"
 
 typedef uint32_t pio_addr_t;
@@ -53,6 +54,7 @@ uint32_t cpu_inl(pio_addr_t addr);
 
 typedef struct PortioList {
     const struct MemoryRegionPortio *ports;
+    Object *owner;
     struct MemoryRegion *address_space;
     unsigned nr;
     struct MemoryRegion **regions;
@@ -60,7 +62,7 @@ typedef struct PortioList {
     const char *name;
 } PortioList;
 
-void portio_list_init(PortioList *piolist,
+void portio_list_init(PortioList *piolist, Object *owner,
                       const struct MemoryRegionPortio *callbacks,
                       void *opaque, const char *name);
 void portio_list_destroy(PortioList *piolist);
diff --git a/ioport.c b/ioport.c
index 3a6a73d..79b7f1a 100644
--- a/ioport.c
+++ b/ioport.c
@@ -106,6 +106,7 @@ uint32_t cpu_inl(pio_addr_t addr)
 }
 
 void portio_list_init(PortioList *piolist,
+                      Object *owner,
                       const MemoryRegionPortio *callbacks,
                       void *opaque, const char *name)
 {
@@ -120,6 +121,7 @@ void portio_list_init(PortioList *piolist,
     piolist->regions = g_new0(MemoryRegion *, n);
     piolist->address_space = NULL;
     piolist->opaque = opaque;
+    piolist->owner = owner;
     piolist->name = name;
 }
 
@@ -211,8 +213,8 @@ static void portio_list_add_1(PortioList *piolist,
      * Use an alias so that the callback is called with an absolute address,
      * rather than an offset relative to to start + off_low.
      */
-    memory_region_init_io(&mrpio->mr, NULL, &portio_ops, mrpio, piolist->name,
-                          off_high - off_low);
+    memory_region_init_io(&mrpio->mr, piolist->owner, &portio_ops, mrpio,
+                          piolist->name, off_high - off_low);
     memory_region_add_subregion(piolist->address_space,
                                 start + off_low, &mrpio->mr);
     piolist->regions[piolist->nr] = &mrpio->mr;
-- 
1.8.1.4

  parent reply	other threads:[~2013-07-04 15:15 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-04 15:12 [Qemu-devel] [PULL 00/66] Memory API changes for 1.6: ownership, I/O ports, RCU preparation Paolo Bonzini
2013-07-04 15:12 ` [Qemu-devel] [PATCH 01/66] int128: optimize and add test cases Paolo Bonzini
2013-07-04 15:12 ` [Qemu-devel] [PATCH 02/66] scsi: keep device alive while it has requests Paolo Bonzini
2013-07-04 15:12 ` [Qemu-devel] [PATCH 03/66] dma: keep a device alive while it has SGLists Paolo Bonzini
2013-07-04 15:51   ` Jan Kiszka
2013-07-04 15:59     ` Jan Kiszka
2013-07-04 16:00     ` Paolo Bonzini
2013-07-04 16:17       ` Jan Kiszka
2013-07-04 15:13 ` [Qemu-devel] [PATCH 04/66] adlib: replace register_ioport* Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 05/66] applesmc: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 06/66] wdt_ib700: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 07/66] i82374: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 08/66] prep: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 09/66] vt82c686: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 10/66] Privatize register_ioport_read/write Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 11/66] isa: implement isa_is_ioport_assigned via memory_region_find Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 12/66] vmware-vga: Accept unaligned I/O accesses Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 13/66] xen: Mark fixed platform I/O as unaligned Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 14/66] ioport: Switch dispatching to memory core layer Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 15/66] ioport: Remove unused old dispatching services Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 16/66] vmport: Disentangle read handler type from portio Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 17/66] ioport: Move portio types to ioport.h Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 19/66] memory: destroy phys_sections one by one Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 20/66] exec: simplify destruction of the phys map Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 21/66] memory: add getter for owner Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 22/66] memory: add ref/unref Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 23/66] memory: introduce memory_region_present Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 24/66] memory: add ref/unref calls Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 25/66] exec: check MRU in qemu_ram_addr_from_host Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 26/66] exec: move qemu_ram_addr_from_host_nofail to cputlb.c Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 27/66] memory: return MemoryRegion from qemu_ram_addr_from_host Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 28/66] exec: reorganize address_space_map Paolo Bonzini
2013-07-08  8:21   ` Peter Maydell
2013-07-04 15:13 ` [Qemu-devel] [PATCH 29/66] memory: ref/unref memory across address_space_map/unmap Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 30/66] escc: rename struct to ESCCState Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 31/66] vga: pass owner to vga_init Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 32/66] vga: pass owner to vga_common_init Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 33/66] vga: pass owner to cirrus_init_common Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 34/66] vga: pass owner to vga_init_vbe Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 35/66] vga: pass owner to vga_init_io Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 36/66] vga: set owner in vga_update_memory_access Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 37/66] ne2000: pass device to ne2000_setup_io, use it as owner Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 38/66] vfio: pass device to vfio_mmap_bar and use it to set owner Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 39/66] spapr_iommu: pass device to spapr_tce_new_table " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 40/66] pam: pass device to init_pam " Paolo Bonzini
2013-07-04 15:13 ` Paolo Bonzini [this message]
2013-07-04 15:13 ` [Qemu-devel] [PATCH 42/66] hw/a*: pass owner to memory_region_init* functions Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 43/66] hw/block: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 44/66] hw/c*: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 45/66] hw/d*: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 46/66] hw/gpio: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 47/66] hw/i*: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 48/66] hw/m*: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 49/66] hw/n*: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 50/66] hw/p*: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 51/66] hw/s*: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 52/66] hw/t*: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 53/66] hw/[u-x]*: " Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 54/66] add a header file for atomic operations Paolo Bonzini
2013-10-20 16:20   ` Peter Maydell
2013-10-21  6:06     ` Paolo Bonzini
2013-10-21 13:53       ` Peter Maydell
2013-10-22  5:45         ` Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 55/66] memory: access FlatView from a local variable Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 56/66] memory: use a new FlatView pointer on every topology update Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 57/66] memory: add reference counting to FlatView Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 58/66] qom: Use atomics for object refcounting Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 59/66] exec: change well-known physical sections to macros Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 60/66] exec: separate current memory map from the one being built Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 61/66] memory: move MemoryListener declaration earlier Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 62/66] exec: move listener from AddressSpaceDispatch to AddressSpace Paolo Bonzini
2013-07-04 15:13 ` [Qemu-devel] [PATCH 63/66] exec: separate current radix tree from the one being built Paolo Bonzini
2013-07-04 15:14 ` [Qemu-devel] [PATCH 64/66] exec: put memory map in AddressSpaceDispatch Paolo Bonzini
2013-07-04 15:14 ` [Qemu-devel] [PATCH 65/66] exec: remove cur_map Paolo Bonzini
2013-07-04 15:14 ` [Qemu-devel] [PATCH 66/66] exec: change some APIs to take AddressSpaceDispatch Paolo Bonzini
2013-07-04 15:52 ` [Qemu-devel] [PULL 00/66] Memory API changes for 1.6: ownership, I/O ports, RCU preparation Paolo Bonzini
2013-07-04 16:08   ` Paolo Bonzini
2013-07-08 13:20   ` Anthony Liguori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1372950842-32422-42-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).