On 03/06/2018 09:23 PM, David Gibson wrote: > On Wed, Mar 07, 2018 at 12:15:15AM +0100, BALATON Zoltan wrote: >> An exit function was mistakenly left here but it's not needed because >> the PCI bars are organised differently in this device. Calling this >> exit function during device_del was causing an abort with >> memory_region_del_subregion: `Assertion subregion->container == mr' failed. >> >> Reported-by: Thomas Huth <th...@redhat.com> >> Signed-off-by: BALATON Zoltan <bala...@eik.bme.hu> > > Applied to ppc-for-2.12, thanks. >
Beat me to it, thanks! I'm a little distracted right now. >> --- >> hw/ide/sii3112.c | 12 ------------ >> 1 file changed, 12 deletions(-) >> >> diff --git a/hw/ide/sii3112.c b/hw/ide/sii3112.c >> index e3896c6..743a50e 100644 >> --- a/hw/ide/sii3112.c >> +++ b/hw/ide/sii3112.c >> @@ -327,17 +327,6 @@ static void sii3112_pci_realize(PCIDevice *dev, Error >> **errp) >> qemu_register_reset(sii3112_reset, s); >> } >> >> -static void sii3112_pci_exitfn(PCIDevice *dev) >> -{ >> - PCIIDEState *d = PCI_IDE(dev); >> - int i; >> - >> - for (i = 0; i < 2; ++i) { >> - memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].extra_io); >> - memory_region_del_subregion(&d->bmdma_bar, >> &d->bmdma[i].addr_ioport); >> - } >> -} >> - >> static void sii3112_pci_class_init(ObjectClass *klass, void *data) >> { >> DeviceClass *dc = DEVICE_CLASS(klass); >> @@ -348,7 +337,6 @@ static void sii3112_pci_class_init(ObjectClass *klass, >> void *data) >> pd->class_id = PCI_CLASS_STORAGE_RAID; >> pd->revision = 1; >> pd->realize = sii3112_pci_realize; >> - pd->exit = sii3112_pci_exitfn; >> dc->desc = "SiI3112A SATA controller"; >> set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); >> } >