Commit 4b09be85a08c601cf2f25f799ab6f4c51c165e0a

Authored by aliguori
1 parent a4c20c6a

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
Showing 2 changed files with 24 additions and 0 deletions
hw/e1000.c
@@ -1034,6 +1034,16 @@ e1000_mmio_map(PCIDevice *pci_dev, int region_num, @@ -1034,6 +1034,16 @@ e1000_mmio_map(PCIDevice *pci_dev, int region_num,
1034 excluded_regs[i] - 4); 1034 excluded_regs[i] - 4);
1035 } 1035 }
1036 1036
  1037 +static int
  1038 +pci_e1000_uninit(PCIDevice *dev)
  1039 +{
  1040 + E1000State *d = (E1000State *) dev;
  1041 +
  1042 + cpu_unregister_io_memory(d->mmio_index);
  1043 +
  1044 + return 0;
  1045 +}
  1046 +
1037 PCIDevice * 1047 PCIDevice *
1038 pci_e1000_init(PCIBus *bus, NICInfo *nd, int devfn) 1048 pci_e1000_init(PCIBus *bus, NICInfo *nd, int devfn)
1039 { 1049 {
@@ -1092,6 +1102,7 @@ pci_e1000_init(PCIBus *bus, NICInfo *nd, int devfn) @@ -1092,6 +1102,7 @@ pci_e1000_init(PCIBus *bus, NICInfo *nd, int devfn)
1092 qemu_format_nic_info_str(d->vc, d->nd->macaddr); 1102 qemu_format_nic_info_str(d->vc, d->nd->macaddr);
1093 1103
1094 register_savevm(info_str, -1, 2, nic_save, nic_load, d); 1104 register_savevm(info_str, -1, 2, nic_save, nic_load, d);
  1105 + d->dev.unregister = pci_e1000_uninit;
1095 1106
1096 return (PCIDevice *)d; 1107 return (PCIDevice *)d;
1097 } 1108 }
hw/lsi53c895a.c
@@ -1962,6 +1962,18 @@ void lsi_scsi_attach(void *opaque, BlockDriverState *bd, int id) @@ -1962,6 +1962,18 @@ void lsi_scsi_attach(void *opaque, BlockDriverState *bd, int id)
1962 bd->private = &s->pci_dev; 1962 bd->private = &s->pci_dev;
1963 } 1963 }
1964 1964
  1965 +static int lsi_scsi_uninit(PCIDevice *d)
  1966 +{
  1967 + LSIState *s = (LSIState *) d;
  1968 +
  1969 + cpu_unregister_io_memory(s->mmio_io_addr);
  1970 + cpu_unregister_io_memory(s->ram_io_addr);
  1971 +
  1972 + qemu_free(s->queue);
  1973 +
  1974 + return 0;
  1975 +}
  1976 +
1965 void *lsi_scsi_init(PCIBus *bus, int devfn) 1977 void *lsi_scsi_init(PCIBus *bus, int devfn)
1966 { 1978 {
1967 LSIState *s; 1979 LSIState *s;
@@ -2004,6 +2016,7 @@ void *lsi_scsi_init(PCIBus *bus, int devfn) @@ -2004,6 +2016,7 @@ void *lsi_scsi_init(PCIBus *bus, int devfn)
2004 s->queue = qemu_malloc(sizeof(lsi_queue)); 2016 s->queue = qemu_malloc(sizeof(lsi_queue));
2005 s->queue_len = 1; 2017 s->queue_len = 1;
2006 s->active_commands = 0; 2018 s->active_commands = 0;
  2019 + s->pci_dev.unregister = lsi_scsi_uninit;
2007 2020
2008 lsi_soft_reset(s); 2021 lsi_soft_reset(s);
2009 2022