On Thu, Jul 31, 2014 at 10:52 PM, Peter Crosthwaite <peter.crosthwa...@xilinx.com> wrote: > On Wed, Jul 30, 2014 at 8:27 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: >> The function is empty after the previous patch, so remove it. >> > > So the bulk of this affects the PCI teardown process which i'm not > hugely familiar with but looks largely ok. Especially the few non-PCI > bits in there (hostmem, stellaris etc). > >> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > > Acked-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com>
Had a closer look at this: Reviewed-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com> > >> --- >> backends/hostmem.c | 10 ---------- >> hw/audio/ac97.c | 9 --------- >> hw/audio/es1370.c | 8 -------- >> hw/audio/intel-hda.c | 1 - >> hw/block/nvme.c | 1 - >> hw/block/pflash_cfi01.c | 1 - >> hw/block/pflash_cfi02.c | 1 - >> hw/char/serial-pci.c | 3 --- >> hw/i386/kvm/pci-assign.c | 8 -------- >> hw/ide/ahci.c | 2 -- >> hw/ide/cmd646.c | 5 ----- >> hw/ide/piix.c | 3 --- >> hw/ide/via.c | 3 --- >> hw/ipack/tpci200.c | 13 ------------- >> hw/misc/ivshmem.c | 3 --- >> hw/misc/pci-testdev.c | 2 -- >> hw/misc/vfio.c | 7 ------- >> hw/net/e1000.c | 2 -- >> hw/net/eepro100.c | 3 --- >> hw/net/ne2000.c | 1 - >> hw/net/pcnet-pci.c | 2 -- >> hw/net/rtl8139.c | 2 -- >> hw/net/stellaris_enet.c | 8 -------- >> hw/net/vmxnet3.c | 4 ---- >> hw/pci-bridge/pci_bridge_dev.c | 2 -- >> hw/pci/msix.c | 4 ---- >> hw/pci/pci.c | 2 -- >> hw/pci/pci_bridge.c | 8 -------- >> hw/pci/pcie_host.c | 1 - >> hw/pci/shpc.c | 1 - >> hw/scsi/esp-pci.c | 1 - >> hw/scsi/lsi53c895a.c | 10 ---------- >> hw/scsi/megasas.c | 3 --- >> hw/scsi/vmw_pvscsi.c | 3 --- >> hw/tpm/tpm_tis.c | 1 - >> hw/usb/hcd-uhci.c | 8 -------- >> hw/virtio/virtio-pci.c | 3 --- >> hw/watchdog/wdt_i6300esb.c | 8 -------- >> hw/xen/xen_pt.c | 20 -------------------- >> hw/xen/xen_pt_msi.c | 2 -- >> include/exec/memory.h | 9 --------- >> memory.c | 5 ----- >> 42 files changed, 193 deletions(-) >> >> diff --git a/backends/hostmem.c b/backends/hostmem.c >> index ca10c51..e7eec37 100644 >> --- a/backends/hostmem.c >> +++ b/backends/hostmem.c >> @@ -257,15 +257,6 @@ static void host_memory_backend_init(Object *obj) >> host_memory_backend_set_policy, NULL, NULL, NULL); >> } >> >> -static void host_memory_backend_finalize(Object *obj) >> -{ >> - HostMemoryBackend *backend = MEMORY_BACKEND(obj); >> - >> - if (memory_region_size(&backend->mr)) { >> - memory_region_destroy(&backend->mr); >> - } >> -} >> - >> MemoryRegion * >> host_memory_backend_get_memory(HostMemoryBackend *backend, Error **errp) >> { >> @@ -360,7 +351,6 @@ static const TypeInfo host_memory_backend_info = { >> .class_init = host_memory_backend_class_init, >> .instance_size = sizeof(HostMemoryBackend), >> .instance_init = host_memory_backend_init, >> - .instance_finalize = host_memory_backend_finalize, >> .interfaces = (InterfaceInfo[]) { >> { TYPE_USER_CREATABLE }, >> { } >> diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c >> index 45cb118..0e22bb9 100644 >> --- a/hw/audio/ac97.c >> +++ b/hw/audio/ac97.c >> @@ -1388,14 +1388,6 @@ static int ac97_initfn (PCIDevice *dev) >> return 0; >> } >> >> -static void ac97_exitfn (PCIDevice *dev) >> -{ >> - AC97LinkState *s = DO_UPCAST (AC97LinkState, dev, dev); >> - >> - memory_region_destroy (&s->io_nam); >> - memory_region_destroy (&s->io_nabm); >> -} >> - >> static int ac97_init (PCIBus *bus) >> { >> pci_create_simple (bus, -1, "AC97"); >> @@ -1413,7 +1405,6 @@ static void ac97_class_init (ObjectClass *klass, void >> *data) >> PCIDeviceClass *k = PCI_DEVICE_CLASS (klass); >> >> k->init = ac97_initfn; >> - k->exit = ac97_exitfn; >> k->vendor_id = PCI_VENDOR_ID_INTEL; >> k->device_id = PCI_DEVICE_ID_INTEL_82801AA_5; >> k->revision = 0x01; >> diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c >> index 5dbf803..e67d1ea 100644 >> --- a/hw/audio/es1370.c >> +++ b/hw/audio/es1370.c >> @@ -1042,13 +1042,6 @@ static int es1370_initfn (PCIDevice *dev) >> return 0; >> } >> >> -static void es1370_exitfn (PCIDevice *dev) >> -{ >> - ES1370State *s = DO_UPCAST (ES1370State, dev, dev); >> - >> - memory_region_destroy (&s->io); >> -} >> - >> static int es1370_init (PCIBus *bus) >> { >> pci_create_simple (bus, -1, "ES1370"); >> @@ -1061,7 +1054,6 @@ static void es1370_class_init (ObjectClass *klass, >> void *data) >> PCIDeviceClass *k = PCI_DEVICE_CLASS (klass); >> >> k->init = es1370_initfn; >> - k->exit = es1370_exitfn; >> k->vendor_id = PCI_VENDOR_ID_ENSONIQ; >> k->device_id = PCI_DEVICE_ID_ENSONIQ_ES1370; >> k->class_id = PCI_CLASS_MULTIMEDIA_AUDIO; >> diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c >> index aa49b47..aba45fc 100644 >> --- a/hw/audio/intel-hda.c >> +++ b/hw/audio/intel-hda.c >> @@ -1155,7 +1155,6 @@ static void intel_hda_exit(PCIDevice *pci) >> IntelHDAState *d = INTEL_HDA(pci); >> >> msi_uninit(&d->pci); >> - memory_region_destroy(&d->mmio); >> } >> >> static int intel_hda_post_load(void *opaque, int version) >> diff --git a/hw/block/nvme.c b/hw/block/nvme.c >> index 5fd8f89..6d9a065 100644 >> --- a/hw/block/nvme.c >> +++ b/hw/block/nvme.c >> @@ -839,7 +839,6 @@ static void nvme_exit(PCIDevice *pci_dev) >> g_free(n->cq); >> g_free(n->sq); >> msix_uninit_exclusive_bar(pci_dev); >> - memory_region_destroy(&n->iomem); >> } >> >> static Property nvme_props[] = { >> diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c >> index f9507b4..2238f39 100644 >> --- a/hw/block/pflash_cfi01.c >> +++ b/hw/block/pflash_cfi01.c >> @@ -781,7 +781,6 @@ static void pflash_cfi01_realize(DeviceState *dev, Error >> **errp) >> >> if (ret < 0) { >> vmstate_unregister_ram(&pfl->mem, DEVICE(pfl)); >> - memory_region_destroy(&pfl->mem); >> error_setg(errp, "failed to read the initial flash content"); >> return; >> } >> diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c >> index 8d4b828..e196f4d 100644 >> --- a/hw/block/pflash_cfi02.c >> +++ b/hw/block/pflash_cfi02.c >> @@ -617,7 +617,6 @@ static void pflash_cfi02_realize(DeviceState *dev, Error >> **errp) >> ret = bdrv_read(pfl->bs, 0, pfl->storage, chip_len >> 9); >> if (ret < 0) { >> vmstate_unregister_ram(&pfl->orig_mem, DEVICE(pfl)); >> - memory_region_destroy(&pfl->orig_mem); >> error_setg(errp, "failed to read the initial flash content"); >> return; >> } >> diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c >> index c133c33..f05c9b4 100644 >> --- a/hw/char/serial-pci.c >> +++ b/hw/char/serial-pci.c >> @@ -135,7 +135,6 @@ static void serial_pci_exit(PCIDevice *dev) >> SerialState *s = &pci->state; >> >> serial_exit_core(s); >> - memory_region_destroy(&s->io); >> qemu_free_irq(s->irq); >> } >> >> @@ -149,10 +148,8 @@ static void multi_serial_pci_exit(PCIDevice *dev) >> s = pci->state + i; >> serial_exit_core(s); >> memory_region_del_subregion(&pci->iobar, &s->io); >> - memory_region_destroy(&s->io); >> g_free(pci->name[i]); >> } >> - memory_region_destroy(&pci->iobar); >> qemu_free_irqs(pci->irqs, pci->ports); >> } >> >> diff --git a/hw/i386/kvm/pci-assign.c b/hw/i386/kvm/pci-assign.c >> index de33657..17c7d6dc 100644 >> --- a/hw/i386/kvm/pci-assign.c >> +++ b/hw/i386/kvm/pci-assign.c >> @@ -697,8 +697,6 @@ static void free_assigned_device(AssignedDevice *dev) >> if (region->u.r_baseport) { >> memory_region_del_subregion(®ion->container, >> ®ion->real_iomem); >> - memory_region_destroy(®ion->real_iomem); >> - memory_region_destroy(®ion->container); >> } >> } else if (pci_region->type & IORESOURCE_MEM) { >> if (region->u.r_virtbase) { >> @@ -712,9 +710,6 @@ static void free_assigned_device(AssignedDevice *dev) >> memory_region_del_subregion(®ion->container, >> &dev->mmio); >> } >> - >> - memory_region_destroy(®ion->real_iomem); >> - memory_region_destroy(®ion->container); >> if (munmap(region->u.r_virtbase, >> (pci_region->size + 0xFFF) & 0xFFFFF000)) { >> error_report("Failed to unmap assigned device region: >> %s", >> @@ -1680,8 +1675,6 @@ static void >> assigned_dev_unregister_msix_mmio(AssignedDevice *dev) >> return; >> } >> >> - memory_region_destroy(&dev->mmio); >> - >> if (munmap(dev->msix_table, MSIX_PAGE_SIZE) == -1) { >> error_report("error unmapping msix_table! %s", strerror(errno)); >> } >> @@ -1953,7 +1946,6 @@ static void >> assigned_dev_load_option_rom(AssignedDevice *dev) >> error_printf("Device option ROM contents are probably invalid " >> "(check dmesg).\nSkip option ROM probe with rombar=0, " >> "or load from file with romfile=\n"); >> - memory_region_destroy(&dev->dev.rom); >> goto close_rom; >> } >> >> diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c >> index 604152a..aa0ef42 100644 >> --- a/hw/ide/ahci.c >> +++ b/hw/ide/ahci.c >> @@ -1197,8 +1197,6 @@ void ahci_init(AHCIState *s, DeviceState *qdev, >> AddressSpace *as, int ports) >> >> void ahci_uninit(AHCIState *s) >> { >> - memory_region_destroy(&s->mem); >> - memory_region_destroy(&s->idp); >> g_free(s->dev); >> } >> >> diff --git a/hw/ide/cmd646.c b/hw/ide/cmd646.c >> index a8e35fe..1295ed0 100644 >> --- a/hw/ide/cmd646.c >> +++ b/hw/ide/cmd646.c >> @@ -310,13 +310,8 @@ static void pci_cmd646_ide_exitfn(PCIDevice *dev) >> >> for (i = 0; i < 2; ++i) { >> memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].extra_io); >> - memory_region_destroy(&d->bmdma[i].extra_io); >> memory_region_del_subregion(&d->bmdma_bar, >> &d->bmdma[i].addr_ioport); >> - memory_region_destroy(&d->bmdma[i].addr_ioport); >> - memory_region_destroy(&d->cmd646_bar[i].cmd); >> - memory_region_destroy(&d->cmd646_bar[i].data); >> } >> - memory_region_destroy(&d->bmdma_bar); >> } >> >> void pci_cmd646_ide_init(PCIBus *bus, DriveInfo **hd_table, >> diff --git a/hw/ide/piix.c b/hw/ide/piix.c >> index 8651726..59319eb 100644 >> --- a/hw/ide/piix.c >> +++ b/hw/ide/piix.c >> @@ -207,11 +207,8 @@ static void pci_piix_ide_exitfn(PCIDevice *dev) >> >> for (i = 0; i < 2; ++i) { >> memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].extra_io); >> - memory_region_destroy(&d->bmdma[i].extra_io); >> memory_region_del_subregion(&d->bmdma_bar, >> &d->bmdma[i].addr_ioport); >> - memory_region_destroy(&d->bmdma[i].addr_ioport); >> } >> - memory_region_destroy(&d->bmdma_bar); >> } >> >> /* hd_table must contain 4 block drivers */ >> diff --git a/hw/ide/via.c b/hw/ide/via.c >> index 198123b..89d27b4 100644 >> --- a/hw/ide/via.c >> +++ b/hw/ide/via.c >> @@ -198,11 +198,8 @@ static void vt82c686b_ide_exitfn(PCIDevice *dev) >> >> for (i = 0; i < 2; ++i) { >> memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].extra_io); >> - memory_region_destroy(&d->bmdma[i].extra_io); >> memory_region_del_subregion(&d->bmdma_bar, >> &d->bmdma[i].addr_ioport); >> - memory_region_destroy(&d->bmdma[i].addr_ioport); >> } >> - memory_region_destroy(&d->bmdma_bar); >> } >> >> void vt82c686b_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn) >> diff --git a/hw/ipack/tpci200.c b/hw/ipack/tpci200.c >> index 42ca923..b7031a0 100644 >> --- a/hw/ipack/tpci200.c >> +++ b/hw/ipack/tpci200.c >> @@ -613,18 +613,6 @@ static int tpci200_initfn(PCIDevice *pci_dev) >> return 0; >> } >> >> -static void tpci200_exitfn(PCIDevice *pci_dev) >> -{ >> - TPCI200State *s = TPCI200(pci_dev); >> - >> - memory_region_destroy(&s->mmio); >> - memory_region_destroy(&s->io); >> - memory_region_destroy(&s->las0); >> - memory_region_destroy(&s->las1); >> - memory_region_destroy(&s->las2); >> - memory_region_destroy(&s->las3); >> -} >> - >> static const VMStateDescription vmstate_tpci200 = { >> .name = "tpci200", >> .version_id = 1, >> @@ -645,7 +633,6 @@ static void tpci200_class_init(ObjectClass *klass, void >> *data) >> PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); >> >> k->init = tpci200_initfn; >> - k->exit = tpci200_exitfn; >> k->vendor_id = PCI_VENDOR_ID_TEWS; >> k->device_id = PCI_DEVICE_ID_TEWS_TPCI200; >> k->class_id = PCI_CLASS_BRIDGE_OTHER; >> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c >> index 768e528..156edd2 100644 >> --- a/hw/misc/ivshmem.c >> +++ b/hw/misc/ivshmem.c >> @@ -789,11 +789,8 @@ static void pci_ivshmem_uninit(PCIDevice *dev) >> error_free(s->migration_blocker); >> } >> >> - memory_region_destroy(&s->ivshmem_mmio); >> memory_region_del_subregion(&s->bar, &s->ivshmem); >> vmstate_unregister_ram(&s->ivshmem, DEVICE(dev)); >> - memory_region_destroy(&s->ivshmem); >> - memory_region_destroy(&s->bar); >> unregister_savevm(DEVICE(dev), "ivshmem", s); >> } >> >> diff --git a/hw/misc/pci-testdev.c b/hw/misc/pci-testdev.c >> index ca53b3f..c78a63e 100644 >> --- a/hw/misc/pci-testdev.c >> +++ b/hw/misc/pci-testdev.c >> @@ -293,8 +293,6 @@ pci_testdev_uninit(PCIDevice *dev) >> g_free(d->tests[i].hdr); >> } >> g_free(d->tests); >> - memory_region_destroy(&d->mmio); >> - memory_region_destroy(&d->portio); >> } >> >> static void qdev_pci_testdev_reset(DeviceState *dev) >> diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c >> index af9ae1f..813c2cc 100644 >> --- a/hw/misc/vfio.c >> +++ b/hw/misc/vfio.c >> @@ -2857,15 +2857,11 @@ static void vfio_unmap_bar(VFIODevice *vdev, int nr) >> >> memory_region_del_subregion(&bar->mem, &bar->mmap_mem); >> munmap(bar->mmap, memory_region_size(&bar->mmap_mem)); >> - memory_region_destroy(&bar->mmap_mem); >> >> if (vdev->msix && vdev->msix->table_bar == nr) { >> memory_region_del_subregion(&bar->mem, &vdev->msix->mmap_mem); >> munmap(vdev->msix->mmap, memory_region_size(&vdev->msix->mmap_mem)); >> - memory_region_destroy(&vdev->msix->mmap_mem); >> } >> - >> - memory_region_destroy(&bar->mem); >> } >> >> static int vfio_mmap_bar(VFIODevice *vdev, VFIOBAR *bar, >> @@ -3018,9 +3014,6 @@ static void vfio_unmap_bars(VFIODevice *vdev) >> if (vdev->has_vga) { >> vfio_vga_quirk_teardown(vdev); >> pci_unregister_vga(&vdev->pdev); >> - memory_region_destroy(&vdev->vga.region[QEMU_PCI_VGA_MEM].mem); >> - memory_region_destroy(&vdev->vga.region[QEMU_PCI_VGA_IO_LO].mem); >> - memory_region_destroy(&vdev->vga.region[QEMU_PCI_VGA_IO_HI].mem); >> } >> } >> >> diff --git a/hw/net/e1000.c b/hw/net/e1000.c >> index 0fc29a0..21c38fa 100644 >> --- a/hw/net/e1000.c >> +++ b/hw/net/e1000.c >> @@ -1496,8 +1496,6 @@ pci_e1000_uninit(PCIDevice *dev) >> timer_free(d->autoneg_timer); >> timer_del(d->mit_timer); >> timer_free(d->mit_timer); >> - memory_region_destroy(&d->mmio); >> - memory_region_destroy(&d->io); >> qemu_del_nic(d->nic); >> } >> >> diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c >> index 3263e3f..3cd826a 100644 >> --- a/hw/net/eepro100.c >> +++ b/hw/net/eepro100.c >> @@ -1843,9 +1843,6 @@ static void pci_nic_uninit(PCIDevice *pci_dev) >> { >> EEPRO100State *s = DO_UPCAST(EEPRO100State, dev, pci_dev); >> >> - memory_region_destroy(&s->mmio_bar); >> - memory_region_destroy(&s->io_bar); >> - memory_region_destroy(&s->flash_bar); >> vmstate_unregister(&pci_dev->qdev, s->vmstate, s); >> eeprom93xx_free(&pci_dev->qdev, s->eeprom); >> qemu_del_nic(s->nic); >> diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c >> index d558b8c..a62d12d 100644 >> --- a/hw/net/ne2000.c >> +++ b/hw/net/ne2000.c >> @@ -748,7 +748,6 @@ static void pci_ne2000_exit(PCIDevice *pci_dev) >> PCINE2000State *d = DO_UPCAST(PCINE2000State, dev, pci_dev); >> NE2000State *s = &d->ne2000; >> >> - memory_region_destroy(&s->io); >> qemu_del_nic(s->nic); >> qemu_free_irq(s->irq); >> } >> diff --git a/hw/net/pcnet-pci.c b/hw/net/pcnet-pci.c >> index b25d789..50ffe91 100644 >> --- a/hw/net/pcnet-pci.c >> +++ b/hw/net/pcnet-pci.c >> @@ -282,8 +282,6 @@ static void pci_pcnet_uninit(PCIDevice *dev) >> PCIPCNetState *d = PCI_PCNET(dev); >> >> qemu_free_irq(d->state.irq); >> - memory_region_destroy(&d->state.mmio); >> - memory_region_destroy(&d->io_bar); >> timer_del(d->state.poll_timer); >> timer_free(d->state.poll_timer); >> qemu_del_nic(d->state.nic); >> diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c >> index 90bc5ec..6e59f38 100644 >> --- a/hw/net/rtl8139.c >> +++ b/hw/net/rtl8139.c >> @@ -3462,8 +3462,6 @@ static void pci_rtl8139_uninit(PCIDevice *dev) >> { >> RTL8139State *s = RTL8139(dev); >> >> - memory_region_destroy(&s->bar_io); >> - memory_region_destroy(&s->bar_mem); >> if (s->cplus_txbuffer) { >> g_free(s->cplus_txbuffer); >> s->cplus_txbuffer = NULL; >> diff --git a/hw/net/stellaris_enet.c b/hw/net/stellaris_enet.c >> index c9ee5d3..c07e513 100644 >> --- a/hw/net/stellaris_enet.c >> +++ b/hw/net/stellaris_enet.c >> @@ -485,13 +485,6 @@ static int stellaris_enet_init(SysBusDevice *sbd) >> return 0; >> } >> >> -static void stellaris_enet_unrealize(DeviceState *dev, Error **errp) >> -{ >> - stellaris_enet_state *s = STELLARIS_ENET(dev); >> - >> - memory_region_destroy(&s->mmio); >> -} >> - >> static Property stellaris_enet_properties[] = { >> DEFINE_NIC_PROPERTIES(stellaris_enet_state, conf), >> DEFINE_PROP_END_OF_LIST(), >> @@ -503,7 +496,6 @@ static void stellaris_enet_class_init(ObjectClass >> *klass, void *data) >> SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); >> >> k->init = stellaris_enet_init; >> - dc->unrealize = stellaris_enet_unrealize; >> dc->props = stellaris_enet_properties; >> dc->vmsd = &vmstate_stellaris_enet; >> } >> diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c >> index 77bea6f..f11525c 100644 >> --- a/hw/net/vmxnet3.c >> +++ b/hw/net/vmxnet3.c >> @@ -2182,10 +2182,6 @@ static void vmxnet3_pci_uninit(PCIDevice *pci_dev) >> vmxnet3_cleanup_msix(s); >> >> vmxnet3_cleanup_msi(s); >> - >> - memory_region_destroy(&s->bar0); >> - memory_region_destroy(&s->bar1); >> - memory_region_destroy(&s->msix_bar); >> } >> >> static void vmxnet3_qdev_reset(DeviceState *dev) >> diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c >> index e68145c..92799d0 100644 >> --- a/hw/pci-bridge/pci_bridge_dev.c >> +++ b/hw/pci-bridge/pci_bridge_dev.c >> @@ -81,7 +81,6 @@ msi_error: >> slotid_error: >> shpc_cleanup(dev, &bridge_dev->bar); >> shpc_error: >> - memory_region_destroy(&bridge_dev->bar); >> pci_bridge_exitfn(dev); >> bridge_error: >> return err; >> @@ -95,7 +94,6 @@ static void pci_bridge_dev_exitfn(PCIDevice *dev) >> } >> slotid_cap_cleanup(dev); >> shpc_cleanup(dev, &bridge_dev->bar); >> - memory_region_destroy(&bridge_dev->bar); >> pci_bridge_exitfn(dev); >> } >> >> diff --git a/hw/pci/msix.c b/hw/pci/msix.c >> index 5c49bfc..3c07d22 100644 >> --- a/hw/pci/msix.c >> +++ b/hw/pci/msix.c >> @@ -319,7 +319,6 @@ int msix_init_exclusive_bar(PCIDevice *dev, unsigned >> short nentries, >> bar_nr, MSIX_EXCLUSIVE_BAR_PBA_OFFSET, >> MSIX_EXCLUSIVE_CAP_OFFSET); >> if (ret) { >> - memory_region_destroy(&dev->msix_exclusive_bar); >> return ret; >> } >> >> @@ -359,11 +358,9 @@ void msix_uninit(PCIDevice *dev, MemoryRegion >> *table_bar, MemoryRegion *pba_bar) >> msix_free_irq_entries(dev); >> dev->msix_entries_nr = 0; >> memory_region_del_subregion(pba_bar, &dev->msix_pba_mmio); >> - memory_region_destroy(&dev->msix_pba_mmio); >> g_free(dev->msix_pba); >> dev->msix_pba = NULL; >> memory_region_del_subregion(table_bar, &dev->msix_table_mmio); >> - memory_region_destroy(&dev->msix_table_mmio); >> g_free(dev->msix_table); >> dev->msix_table = NULL; >> g_free(dev->msix_entry_used); >> @@ -375,7 +372,6 @@ void msix_uninit_exclusive_bar(PCIDevice *dev) >> { >> if (msix_present(dev)) { >> msix_uninit(dev, &dev->msix_exclusive_bar, >> &dev->msix_exclusive_bar); >> - memory_region_destroy(&dev->msix_exclusive_bar); >> } >> } >> >> diff --git a/hw/pci/pci.c b/hw/pci/pci.c >> index 351d320..daeaeac 100644 >> --- a/hw/pci/pci.c >> +++ b/hw/pci/pci.c >> @@ -799,7 +799,6 @@ static void do_pci_unregister_device(PCIDevice *pci_dev) >> pci_config_free(pci_dev); >> >> address_space_destroy(&pci_dev->bus_master_as); >> - memory_region_destroy(&pci_dev->bus_master_enable_region); >> } >> >> /* -1 for devfn means auto assign */ >> @@ -1996,7 +1995,6 @@ static void pci_del_option_rom(PCIDevice *pdev) >> return; >> >> vmstate_unregister_ram(&pdev->rom, &pdev->qdev); >> - memory_region_destroy(&pdev->rom); >> pdev->has_rom = false; >> } >> >> diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c >> index 4becdc1..1307265 100644 >> --- a/hw/pci/pci_bridge.c >> +++ b/hw/pci/pci_bridge.c >> @@ -219,12 +219,6 @@ static void pci_bridge_region_del(PCIBridge *br, >> PCIBridgeWindows *w) >> >> static void pci_bridge_region_cleanup(PCIBridge *br, PCIBridgeWindows *w) >> { >> - memory_region_destroy(&w->alias_io); >> - memory_region_destroy(&w->alias_mem); >> - memory_region_destroy(&w->alias_pref_mem); >> - memory_region_destroy(&w->alias_vga[QEMU_PCI_VGA_IO_LO]); >> - memory_region_destroy(&w->alias_vga[QEMU_PCI_VGA_IO_HI]); >> - memory_region_destroy(&w->alias_vga[QEMU_PCI_VGA_MEM]); >> g_free(w); >> } >> >> @@ -389,8 +383,6 @@ void pci_bridge_exitfn(PCIDevice *pci_dev) >> QLIST_REMOVE(&s->sec_bus, sibling); >> pci_bridge_region_del(s, s->windows); >> pci_bridge_region_cleanup(s, s->windows); >> - memory_region_destroy(&s->address_space_mem); >> - memory_region_destroy(&s->address_space_io); >> /* object_unparent() is called automatically during device deletion */ >> } >> >> diff --git a/hw/pci/pcie_host.c b/hw/pci/pcie_host.c >> index 7c88a1d..3db038f 100644 >> --- a/hw/pci/pcie_host.c >> +++ b/hw/pci/pcie_host.c >> @@ -94,7 +94,6 @@ void pcie_host_mmcfg_unmap(PCIExpressHost *e) >> { >> if (e->base_addr != PCIE_BASE_ADDR_UNMAPPED) { >> memory_region_del_subregion(get_system_memory(), &e->mmio); >> - memory_region_destroy(&e->mmio); >> e->base_addr = PCIE_BASE_ADDR_UNMAPPED; >> } >> } >> diff --git a/hw/pci/shpc.c b/hw/pci/shpc.c >> index 180faa7..1fcb8c4 100644 >> --- a/hw/pci/shpc.c >> +++ b/hw/pci/shpc.c >> @@ -667,7 +667,6 @@ void shpc_cleanup(PCIDevice *d, MemoryRegion *bar) >> g_free(shpc->cmask); >> g_free(shpc->wmask); >> g_free(shpc->w1cmask); >> - memory_region_destroy(&shpc->mmio); >> g_free(shpc); >> } >> >> diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c >> index 9971bbf..82795e6 100644 >> --- a/hw/scsi/esp-pci.c >> +++ b/hw/scsi/esp-pci.c >> @@ -378,7 +378,6 @@ static void esp_pci_scsi_uninit(PCIDevice *d) >> PCIESPState *pci = PCI_ESP(d); >> >> qemu_free_irq(pci->esp.irq); >> - memory_region_destroy(&pci->io); >> } >> >> static void esp_pci_class_init(ObjectClass *klass, void *data) >> diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c >> index 786d848..513ea47 100644 >> --- a/hw/scsi/lsi53c895a.c >> +++ b/hw/scsi/lsi53c895a.c >> @@ -2072,15 +2072,6 @@ static const VMStateDescription vmstate_lsi_scsi = { >> } >> }; >> >> -static void lsi_scsi_uninit(PCIDevice *d) >> -{ >> - LSIState *s = LSI53C895A(d); >> - >> - memory_region_destroy(&s->mmio_io); >> - memory_region_destroy(&s->ram_io); >> - memory_region_destroy(&s->io_io); >> -} >> - >> static const struct SCSIBusInfo lsi_scsi_info = { >> .tcq = true, >> .max_target = LSI_MAX_DEVS, >> @@ -2134,7 +2125,6 @@ static void lsi_class_init(ObjectClass *klass, void >> *data) >> PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); >> >> k->init = lsi_scsi_init; >> - k->exit = lsi_scsi_uninit; >> k->vendor_id = PCI_VENDOR_ID_LSI_LOGIC; >> k->device_id = PCI_DEVICE_ID_LSI_53C895A; >> k->class_id = PCI_CLASS_STORAGE_SCSI; >> diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c >> index c68a873..eedc992 100644 >> --- a/hw/scsi/megasas.c >> +++ b/hw/scsi/megasas.c >> @@ -2129,9 +2129,6 @@ static void megasas_scsi_uninit(PCIDevice *d) >> if (megasas_use_msi(s)) { >> msi_uninit(d); >> } >> - memory_region_destroy(&s->mmio_io); >> - memory_region_destroy(&s->port_io); >> - memory_region_destroy(&s->queue_io); >> } >> >> static const struct SCSIBusInfo megasas_scsi_info = { >> diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c >> index f9ed926..5734d19 100644 >> --- a/hw/scsi/vmw_pvscsi.c >> +++ b/hw/scsi/vmw_pvscsi.c >> @@ -1087,7 +1087,6 @@ pvscsi_init(PCIDevice *pci_dev) >> s->completion_worker = qemu_bh_new(pvscsi_process_completion_queue, s); >> if (!s->completion_worker) { >> pvscsi_cleanup_msi(s); >> - memory_region_destroy(&s->io_space); >> return -ENOMEM; >> } >> >> @@ -1107,8 +1106,6 @@ pvscsi_uninit(PCIDevice *pci_dev) >> qemu_bh_delete(s->completion_worker); >> >> pvscsi_cleanup_msi(s); >> - >> - memory_region_destroy(&s->io_space); >> } >> >> static void >> diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c >> index 6f0a4d2..d398c16 100644 >> --- a/hw/tpm/tpm_tis.c >> +++ b/hw/tpm/tpm_tis.c >> @@ -901,7 +901,6 @@ static void tpm_tis_uninitfn(Object *obj) >> TPMState *s = TPM(obj); >> >> memory_region_del_subregion(get_system_memory(), &s->mmio); >> - memory_region_destroy(&s->mmio); >> } >> >> static void tpm_tis_class_init(ObjectClass *klass, void *data) >> diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c >> index c3bf72c..ee5f112 100644 >> --- a/hw/usb/hcd-uhci.c >> +++ b/hw/usb/hcd-uhci.c >> @@ -1256,13 +1256,6 @@ static int usb_uhci_vt82c686b_initfn(PCIDevice *dev) >> return usb_uhci_common_initfn(dev); >> } >> >> -static void usb_uhci_exit(PCIDevice *dev) >> -{ >> - UHCIState *s = DO_UPCAST(UHCIState, dev, dev); >> - >> - memory_region_destroy(&s->io_bar); >> -} >> - >> static Property uhci_properties[] = { >> DEFINE_PROP_STRING("masterbus", UHCIState, masterbus), >> DEFINE_PROP_UINT32("firstport", UHCIState, firstport, 0), >> @@ -1279,7 +1272,6 @@ static void uhci_class_init(ObjectClass *klass, void >> *data) >> UHCIInfo *info = data; >> >> k->init = info->initfn ? info->initfn : usb_uhci_common_initfn; >> - k->exit = info->unplug ? usb_uhci_exit : NULL; >> k->vendor_id = info->vendor_id; >> k->device_id = info->device_id; >> k->revision = info->revision; >> diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c >> index 3007319..ddb5da1 100644 >> --- a/hw/virtio/virtio-pci.c >> +++ b/hw/virtio/virtio-pci.c >> @@ -1020,10 +1020,7 @@ static int virtio_pci_init(PCIDevice *pci_dev) >> >> static void virtio_pci_exit(PCIDevice *pci_dev) >> { >> - VirtIOPCIProxy *proxy = VIRTIO_PCI(pci_dev); >> - >> msix_uninit_exclusive_bar(pci_dev); >> - memory_region_destroy(&proxy->bar); >> } >> >> static void virtio_pci_reset(DeviceState *qdev) >> diff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c >> index b3d6f39..687c8b1 100644 >> --- a/hw/watchdog/wdt_i6300esb.c >> +++ b/hw/watchdog/wdt_i6300esb.c >> @@ -425,13 +425,6 @@ static int i6300esb_init(PCIDevice *dev) >> return 0; >> } >> >> -static void i6300esb_exit(PCIDevice *dev) >> -{ >> - I6300State *d = DO_UPCAST(I6300State, dev, dev); >> - >> - memory_region_destroy(&d->io_mem); >> -} >> - >> static WatchdogTimerModel model = { >> .wdt_name = "i6300esb", >> .wdt_description = "Intel 6300ESB", >> @@ -445,7 +438,6 @@ static void i6300esb_class_init(ObjectClass *klass, void >> *data) >> k->config_read = i6300esb_config_read; >> k->config_write = i6300esb_config_write; >> k->init = i6300esb_init; >> - k->exit = i6300esb_exit; >> k->vendor_id = PCI_VENDOR_ID_INTEL; >> k->device_id = PCI_DEVICE_ID_INTEL_ESB_9; >> k->class_id = PCI_CLASS_SYSTEM_OTHER; >> diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c >> index be4220b..c1bf357 100644 >> --- a/hw/xen/xen_pt.c >> +++ b/hw/xen/xen_pt.c >> @@ -453,25 +453,6 @@ static int >> xen_pt_register_regions(XenPCIPassthroughState *s) >> return 0; >> } >> >> -static void xen_pt_unregister_regions(XenPCIPassthroughState *s) >> -{ >> - XenHostPCIDevice *d = &s->real_device; >> - int i; >> - >> - for (i = 0; i < PCI_NUM_REGIONS - 1; i++) { >> - XenHostPCIIORegion *r = &d->io_regions[i]; >> - >> - if (r->base_addr == 0 || r->size == 0) { >> - continue; >> - } >> - >> - memory_region_destroy(&s->bar[i]); >> - } >> - if (d->rom.base_addr && d->rom.size) { >> - memory_region_destroy(&s->rom); >> - } >> -} >> - >> /* region mapping */ >> >> static int xen_pt_bar_from_region(XenPCIPassthroughState *s, MemoryRegion >> *mr) >> @@ -810,7 +791,6 @@ static void xen_pt_unregister_device(PCIDevice *d) >> /* delete all emulated config registers */ >> xen_pt_config_delete(s); >> >> - xen_pt_unregister_regions(s); >> memory_listener_unregister(&s->memory_listener); >> memory_listener_unregister(&s->io_listener); >> >> diff --git a/hw/xen/xen_pt_msi.c b/hw/xen/xen_pt_msi.c >> index 12b4c45..9ed9321 100644 >> --- a/hw/xen/xen_pt_msi.c >> +++ b/hw/xen/xen_pt_msi.c >> @@ -593,7 +593,6 @@ int xen_pt_msix_init(XenPCIPassthroughState *s, uint32_t >> base) >> return 0; >> >> error_out: >> - memory_region_destroy(&msix->mmio); >> g_free(s->msix); >> s->msix = NULL; >> return rc; >> @@ -616,7 +615,6 @@ void xen_pt_msix_delete(XenPCIPassthroughState *s) >> } >> >> memory_region_del_subregion(&s->bar[msix->bar_index], &msix->mmio); >> - memory_region_destroy(&msix->mmio); >> >> g_free(s->msix); >> s->msix = NULL; >> diff --git a/include/exec/memory.h b/include/exec/memory.h >> index e2c8e3e..5bd10d1 100644 >> --- a/include/exec/memory.h >> +++ b/include/exec/memory.h >> @@ -430,15 +430,6 @@ void memory_region_init_iommu(MemoryRegion *mr, >> uint64_t size); >> >> /** >> - * memory_region_destroy: Destroy a memory region and reclaim all resources. >> - * >> - * @mr: the region to be destroyed. May not currently be a subregion >> - * (see memory_region_add_subregion()) or referenced in an alias >> - * (see memory_region_init_alias()). >> - */ >> -void memory_region_destroy(MemoryRegion *mr); >> - >> -/** >> * memory_region_owner: get a memory region's owner. >> * >> * @mr: the memory region being queried. >> diff --git a/memory.c b/memory.c >> index 23c5269..f11c035 100644 >> --- a/memory.c >> +++ b/memory.c >> @@ -1264,11 +1264,6 @@ static void memory_region_finalize(Object *obj) >> g_free(mr->ioeventfds); >> } >> >> -void memory_region_destroy(MemoryRegion *mr) >> -{ >> -} >> - >> - >> Object *memory_region_owner(MemoryRegion *mr) >> { >> Object *obj = OBJECT(mr); >> -- >> 1.8.3.1 >> >> >>