The initial state needs to be reset so it's not enough to set it once
at realize. Add a reset method to fix device reset state.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
hw/pci-host/raven.c | 1 -
hw/ppc/prep_systemio.c | 13 ++++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c
index 7ebca8186b..fd45acb7eb 100644
--- a/hw/pci-host/raven.c
+++ b/hw/pci-host/raven.c
@@ -173,7 +173,6 @@ static void raven_pcihost_realize(DeviceState *d, Error **errp)
memory_region_init_io(&s->pci_discontiguous_io, o,
&raven_io_ops, &s->pci_io,
"pci-discontiguous-io", 8 * MiB);
- memory_region_set_enabled(&s->pci_discontiguous_io, false);
memory_region_init(&s->pci_memory, o, "pci-memory", 0x3f000000);
sysbus_init_mmio(dev, &s->pci_io);
diff --git a/hw/ppc/prep_systemio.c b/hw/ppc/prep_systemio.c
index 6ef9b91317..13b8fdb56b 100644
--- a/hw/ppc/prep_systemio.c
+++ b/hw/ppc/prep_systemio.c
@@ -252,6 +252,15 @@ static const MemoryRegionOps ppc_parity_error_ops = {
},
};
+static void prep_systemio_reset(DeviceState *dev)
+{
+ PrepSystemIoState *s = PREP_SYSTEMIO(dev);
+
+ s->iomap_type = PORT0850_IOMAP_NONCONTIGUOUS;
+ memory_region_set_enabled(s->discontiguous_io,
+ !(s->iomap_type & PORT0850_IOMAP_NONCONTIGUOUS));
+}
+
static void prep_systemio_realize(DeviceState *dev, Error **errp)
{
ISADevice *isa = ISA_DEVICE(dev);
@@ -259,9 +268,6 @@ static void prep_systemio_realize(DeviceState *dev, Error **errp)
PowerPCCPU *cpu;
assert(s->discontiguous_io);
- s->iomap_type = PORT0850_IOMAP_NONCONTIGUOUS;
- memory_region_set_enabled(s->discontiguous_io,
- !(s->iomap_type & PORT0850_IOMAP_NONCONTIGUOUS));
cpu = POWERPC_CPU(first_cpu);
s->softreset_irq = qdev_get_gpio_in(DEVICE(cpu), PPC6xx_INPUT_HRESET);
@@ -301,6 +307,7 @@ static void prep_systemio_class_initfn(ObjectClass *klass, const void *data)
dc->vmsd = &vmstate_prep_systemio;
/* Reason: PReP specific device, needs to be wired via properties */
dc->user_creatable = false;
+ device_class_set_legacy_reset(dc, prep_systemio_reset);
device_class_set_props(dc, prep_systemio_properties);
}
--
2.41.3