[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/39] serial: split exit and instance_finalize
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 07/39] serial: split exit and instance_finalize |
Date: |
Tue, 4 Jun 2013 20:52:02 +0200 |
Character devices are still detached at "unrealize" time.
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/char/serial-pci.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c
index 6b6106b..8cdec94 100644
--- a/hw/char/serial-pci.c
+++ b/hw/char/serial-pci.c
@@ -118,6 +118,14 @@ static void serial_pci_exit(PCIDevice *dev)
SerialState *s = &pci->state;
serial_exit_core(s);
+}
+
+static void serial_pci_instance_finalize(Object *obj)
+{
+ PCIDevice *dev = PCI_DEVICE(obj);
+ PCISerialState *pci = DO_UPCAST(PCISerialState, dev, dev);
+ SerialState *s = &pci->state;
+
memory_region_destroy(&s->io);
}
@@ -130,9 +138,22 @@ static void multi_serial_pci_exit(PCIDevice *dev)
for (i = 0; i < pci->ports; i++) {
s = pci->state + i;
serial_exit_core(s);
+ }
+}
+
+static void multi_serial_pci_instance_finalize(Object *obj)
+{
+ PCIDevice *dev = PCI_DEVICE(obj);
+ PCIMultiSerialState *pci = DO_UPCAST(PCIMultiSerialState, dev, dev);
+ SerialState *s;
+ int i;
+
+ for (i = 0; i < pci->ports; i++) {
+ s = pci->state + i;
memory_region_destroy(&s->io);
g_free(pci->name[i]);
}
+
memory_region_destroy(&pci->iobar);
qemu_free_irqs(pci->irqs);
}
@@ -227,6 +248,7 @@ static const TypeInfo serial_pci_info = {
.parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(PCISerialState),
.class_init = serial_pci_class_initfn,
+ .instance_finalize = serial_pci_instance_finalize,
};
static const TypeInfo multi_2x_serial_pci_info = {
@@ -234,6 +256,7 @@ static const TypeInfo multi_2x_serial_pci_info = {
.parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(PCIMultiSerialState),
.class_init = multi_2x_serial_pci_class_initfn,
+ .instance_finalize = multi_serial_pci_instance_finalize,
};
static const TypeInfo multi_4x_serial_pci_info = {
@@ -241,6 +264,7 @@ static const TypeInfo multi_4x_serial_pci_info = {
.parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(PCIMultiSerialState),
.class_init = multi_4x_serial_pci_class_initfn,
+ .instance_finalize = multi_serial_pci_instance_finalize,
};
static void serial_pci_register_types(void)
--
1.8.1.4
- Re: [Qemu-devel] [PATCH 01/39] scsi: keep device alive while it has requests, (continued)
- [Qemu-devel] [PATCH 02/39] dma: keep a device alive while it has SGLists, Paolo Bonzini, 2013/06/04
- [Qemu-devel] [PATCH 03/39] pci: split exit and finalize, Paolo Bonzini, 2013/06/04
- [Qemu-devel] [PATCH 04/39] ac97: use instance_finalize instead of exit, Paolo Bonzini, 2013/06/04
- [Qemu-devel] [PATCH 05/39] es1370: use instance_finalize instead of exit, Paolo Bonzini, 2013/06/04
- [Qemu-devel] [PATCH 06/39] hda: split exit and instance_finalize, Paolo Bonzini, 2013/06/04
- [Qemu-devel] [PATCH 07/39] serial: split exit and instance_finalize,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 08/39] tpci200: use instance_finalize instead of exit, Paolo Bonzini, 2013/06/04
- [Qemu-devel] [PATCH 09/39] pci-assign: split exit and instance_finalize, Paolo Bonzini, 2013/06/04
- [Qemu-devel] [PATCH 10/39] ahci: split exit and instance_finalize, Paolo Bonzini, 2013/06/04
- [Qemu-devel] [PATCH 11/39] msix: split msix_free from msix_uninit, Paolo Bonzini, 2013/06/04
- Re: [Qemu-devel] [PATCH 11/39] msix: split msix_free from msix_uninit, Michael S. Tsirkin, 2013/06/04
- Re: [Qemu-devel] [PATCH 11/39] msix: split msix_free from msix_uninit, Paolo Bonzini, 2013/06/04
- Re: [Qemu-devel] [PATCH 11/39] msix: split msix_free from msix_uninit, Michael S. Tsirkin, 2013/06/05
- Re: [Qemu-devel] [PATCH 11/39] msix: split msix_free from msix_uninit, Paolo Bonzini, 2013/06/05
- Re: [Qemu-devel] [PATCH 11/39] msix: split msix_free from msix_uninit, Michael S. Tsirkin, 2013/06/05
- Re: [Qemu-devel] [PATCH 11/39] msix: split msix_free from msix_uninit, Paolo Bonzini, 2013/06/06