From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1UWdYv-0008Sb-Il for mharc-qemu-trivial@gnu.org; Sun, 28 Apr 2013 22:11:29 -0400 Received: from eggs.gnu.org ([208.118.235.92]:43772) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWdYp-0008S4-PO for qemu-trivial@nongnu.org; Sun, 28 Apr 2013 22:11:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UWdYk-0002nt-O8 for qemu-trivial@nongnu.org; Sun, 28 Apr 2013 22:11:23 -0400 Received: from mail-pd0-f172.google.com ([209.85.192.172]:45678) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWdYk-0002nb-FZ for qemu-trivial@nongnu.org; Sun, 28 Apr 2013 22:11:18 -0400 Received: by mail-pd0-f172.google.com with SMTP id 4so3374400pdd.3 for ; Sun, 28 Apr 2013 19:11:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references:x-gm-message-state; bh=BOKjGnJhiHhFn4qjcxeB+PYG7u8H7n2i5j0Jxc6Vabs=; b=RVmjzktmOdna5hOd6zY3WNZJpBwig8vwxV9fzEBZy0YyxtSgaQCDAzqxy4M/XG8trZ fQBw5KCMlkFV6Iq1UX0bcqM5pTKtYCMvMetRyGnqj4jopw4MTdslVsHwDvS2XQNBI0OK fOExryGxMe41p/nwfj2vq3TTenwurbnSZQUpCqaxurSXD2jADHuO2vRjDfLa4sqw1oGT T/GNU2zyrSzKgyhk+2pHMaNKlEer7OpxcXAzNIy6T3SlH5l0mLM6MlU9DRVI8ES5AfB0 M8METGtg8ojVHDMfyg32jxThlJf2kGqEHkMcx/3HSp6NzMFkJl8MP1ofjPduOulUaO3X uYRw== X-Received: by 10.68.135.133 with SMTP id ps5mr68346515pbb.158.1367201476439; Sun, 28 Apr 2013 19:11:16 -0700 (PDT) Received: from ka1.ozlabs.ibm.com (ibmaus65.lnk.telstra.net. [165.228.126.9]) by mx.google.com with ESMTPSA id kd7sm21833551pbb.34.2013.04.28.19.11.12 for (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 28 Apr 2013 19:11:15 -0700 (PDT) From: Alexey Kardashevskiy To: Paolo Bonzini Date: Mon, 29 Apr 2013 12:11:00 +1000 Message-Id: <1367201460-28594-1-git-send-email-aik@ozlabs.ru> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <517BC1F2.70405@redhat.com> References: <517BC1F2.70405@redhat.com> X-Gm-Message-State: ALoCoQkU2WydKodZw78xJrmCfoNHIw6Ab0z2daN5V1rs1lkyC1lVQ8Znc3jBfkX+JcwPfMvy8Ftd X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 209.85.192.172 Cc: Alexey Kardashevskiy , qemu-trivial@nongnu.org, qemu-devel@nongnu.org, David Gibson Subject: [Qemu-trivial] [PATCH] memory: give name every AddressSpace X-BeenThere: qemu-trivial@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Apr 2013 02:11:28 -0000 The "info mtree" command in QEMU console prints only "memory" and "I/O" address spaces while there are actually a lot more other AddressSpace structs created by PCI and VIO devices. Those devices do not normally have names and therefore not present in "info qtree" output. The patch fixes this. Signed-off-by: Alexey Kardashevskiy --- The number of AddressSpace structs is constantly growing (even without IOMMU) and it is getting harder to trace them so this is why I came up with this patch. Or there is a reason to hide those AddressSpace structs which I do not see, is not it? --- exec.c | 6 ++---- hw/pci/pci.c | 3 ++- hw/ppc/spapr_vio.c | 2 +- include/exec/memory.h | 2 +- memory.c | 7 ++++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/exec.c b/exec.c index 180a345..0091272 100644 --- a/exec.c +++ b/exec.c @@ -1839,13 +1839,11 @@ static void memory_map_init(void) { system_memory = g_malloc(sizeof(*system_memory)); memory_region_init(system_memory, "system", INT64_MAX); - address_space_init(&address_space_memory, system_memory); - address_space_memory.name = "memory"; + address_space_init(&address_space_memory, system_memory, "memory"); system_io = g_malloc(sizeof(*system_io)); memory_region_init(system_io, "io", 65536); - address_space_init(&address_space_io, system_io); - address_space_io.name = "I/O"; + address_space_init(&address_space_io, system_io, "I/O"); memory_listener_register(&core_memory_listener, &address_space_memory); memory_listener_register(&io_memory_listener, &address_space_io); diff --git a/hw/pci/pci.c b/hw/pci/pci.c index fe146dc..0a1acd6 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -823,7 +823,8 @@ static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus, memory_region_init_alias(&pci_dev->bus_master_enable_region, "bus master", pci_dev->iommu, 0, memory_region_size(pci_dev->iommu)); memory_region_set_enabled(&pci_dev->bus_master_enable_region, false); - address_space_init(&pci_dev->bus_master_as, &pci_dev->bus_master_enable_region); + address_space_init(&pci_dev->bus_master_as, &pci_dev->bus_master_enable_region, + name); pci_dev->devfn = devfn; pstrcpy(pci_dev->name, sizeof(pci_dev->name), name); diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c index fbcbd6f..fadde20 100644 --- a/hw/ppc/spapr_vio.c +++ b/hw/ppc/spapr_vio.c @@ -449,7 +449,7 @@ static int spapr_vio_busdev_init(DeviceState *qdev) if (pc->rtce_window_size) { uint32_t liobn = SPAPR_VIO_BASE_LIOBN | dev->reg; dev->tcet = spapr_tce_new_table(liobn, pc->rtce_window_size); - address_space_init(&dev->as, spapr_tce_get_iommu(dev->tcet)); + address_space_init(&dev->as, spapr_tce_get_iommu(dev->tcet), qdev->id); } return pc->init(dev); diff --git a/include/exec/memory.h b/include/exec/memory.h index 99d51b7..b4f1182 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -840,7 +840,7 @@ void mtree_info(fprintf_function mon_printf, void *f); * @as: an uninitialized #AddressSpace * @root: a #MemoryRegion that routes addesses for the address space */ -void address_space_init(AddressSpace *as, MemoryRegion *root); +void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name); /** diff --git a/memory.c b/memory.c index cee3e59..b50f5e6 100644 --- a/memory.c +++ b/memory.c @@ -1002,7 +1002,7 @@ void memory_region_init_iommu(MemoryRegion *mr, mr->terminates = true; /* then re-forwards */ mr->destructor = memory_region_destructor_iommu; mr->iommu_target_as = g_new(AddressSpace, 1); - address_space_init(mr->iommu_target_as, target); + address_space_init(mr->iommu_target_as, target, name); } static uint64_t invalid_read(void *opaque, hwaddr addr, @@ -1599,7 +1599,7 @@ void memory_listener_unregister(MemoryListener *listener) QTAILQ_REMOVE(&memory_listeners, listener, link); } -void address_space_init(AddressSpace *as, MemoryRegion *root) +void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name) { memory_region_transaction_begin(); as->root = root; @@ -1608,7 +1608,7 @@ void address_space_init(AddressSpace *as, MemoryRegion *root) as->ioeventfd_nb = 0; as->ioeventfds = NULL; QTAILQ_INSERT_TAIL(&address_spaces, as, address_spaces_link); - as->name = NULL; + as->name = g_strdup(name?name:"anonymous"); address_space_init_dispatch(as); memory_region_update_pending |= root->enabled; memory_region_transaction_commit(); @@ -1623,6 +1623,7 @@ void address_space_destroy(AddressSpace *as) QTAILQ_REMOVE(&address_spaces, as, address_spaces_link); address_space_destroy_dispatch(as); flatview_destroy(as->current_map); + g_free((void *)as->name); g_free(as->current_map); g_free(as->ioeventfds); } -- 1.7.10.4