From: Liu Ping Fan <[email protected]>
Signed-off-by: Liu Ping Fan <[email protected]>
---
hw/e1000.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/hw/e1000.c b/hw/e1000.c
index 4573f13..4c1e141 100644
--- a/hw/e1000.c
+++ b/hw/e1000.c
@@ -1192,6 +1192,18 @@ e1000_cleanup(VLANClientState *nc)
s->nic = NULL;
}
+static void
+pci_e1000_unmap(DeviceState *dev)
+{
+ PCIDevice *p = PCI_DEVICE(dev);
+ E1000State *d = DO_UPCAST(E1000State, dev, p);
+
+ /* DO NOT FREE anything!until refcnt=0 */
+ /* isolate from memory view */
+ memory_region_destroy(&d->mmio);
+ memory_region_destroy(&d->io);
+}
+
static int
pci_e1000_uninit(PCIDevice *dev)
{
@@ -1199,8 +1211,6 @@ pci_e1000_uninit(PCIDevice *dev)
qemu_del_timer(d->autoneg_timer);
qemu_free_timer(d->autoneg_timer);
- memory_region_destroy(&d->mmio);
- memory_region_destroy(&d->io);
qemu_del_vlan_client(&d->nic->nc);
return 0;
}
@@ -1283,6 +1293,7 @@ static void e1000_class_init(ObjectClass *klass, void
*data)
k->class_id = PCI_CLASS_NETWORK_ETHERNET;
dc->desc = "Intel Gigabit Ethernet";
dc->reset = qdev_e1000_reset;
+ dc->unmap = pci_e1000_unmap;
dc->vmsd = &vmstate_e1000;
dc->props = e1000_properties;
}
--
1.7.4.4
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html