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 <thuth@redhat.com>
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
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);
}
--
2.7.6
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 <thuth@redhat.com>
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Applied to ppc-for-2.12, thanks.
> ---
> 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);
> }
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
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 <thuth@redhat.com>
>> Signed-off-by: BALATON Zoltan <balaton@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);
>> }
>
© 2016 - 2025 Red Hat, Inc.