diff options
author | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2009-02-11 15:21:22 +0000 |
---|---|---|
committer | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2009-02-11 15:21:22 +0000 |
commit | 4b09be85a08c601cf2f25f799ab6f4c51c165e0a (patch) | |
tree | 57a91d69505ad13cd3908db2f259d3a4266bbec4 /hw | |
parent | a4c20c6a542da310eaa6930c2965845614808809 (diff) | |
download | hqemu-4b09be85a08c601cf2f25f799ab6f4c51c165e0a.zip hqemu-4b09be85a08c601cf2f25f799ab6f4c51c165e0a.tar.gz |
qemu: LSI SCSI and e1000 unregister callbacks (Marcelo Tosatti)
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6605 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw')
-rw-r--r-- | hw/e1000.c | 11 | ||||
-rw-r--r-- | hw/lsi53c895a.c | 13 |
2 files changed, 24 insertions, 0 deletions
@@ -1034,6 +1034,16 @@ e1000_mmio_map(PCIDevice *pci_dev, int region_num, excluded_regs[i] - 4); } +static int +pci_e1000_uninit(PCIDevice *dev) +{ + E1000State *d = (E1000State *) dev; + + cpu_unregister_io_memory(d->mmio_index); + + return 0; +} + PCIDevice * pci_e1000_init(PCIBus *bus, NICInfo *nd, int devfn) { @@ -1092,6 +1102,7 @@ pci_e1000_init(PCIBus *bus, NICInfo *nd, int devfn) qemu_format_nic_info_str(d->vc, d->nd->macaddr); register_savevm(info_str, -1, 2, nic_save, nic_load, d); + d->dev.unregister = pci_e1000_uninit; return (PCIDevice *)d; } diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c index 6991a60..36ee28e 100644 --- a/hw/lsi53c895a.c +++ b/hw/lsi53c895a.c @@ -1962,6 +1962,18 @@ void lsi_scsi_attach(void *opaque, BlockDriverState *bd, int id) bd->private = &s->pci_dev; } +static int lsi_scsi_uninit(PCIDevice *d) +{ + LSIState *s = (LSIState *) d; + + cpu_unregister_io_memory(s->mmio_io_addr); + cpu_unregister_io_memory(s->ram_io_addr); + + qemu_free(s->queue); + + return 0; +} + void *lsi_scsi_init(PCIBus *bus, int devfn) { LSIState *s; @@ -2004,6 +2016,7 @@ void *lsi_scsi_init(PCIBus *bus, int devfn) s->queue = qemu_malloc(sizeof(lsi_queue)); s->queue_len = 1; s->active_commands = 0; + s->pci_dev.unregister = lsi_scsi_uninit; lsi_soft_reset(s); |