ACPI regions are added directly to the I/O address space, without going through BARs. Thus they need the owner to be set directly.
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- hw/acpi/ich9.c | 1 + hw/acpi/piix4.c | 5 +++++ hw/isa/apm.c | 1 + 3 files changed, 7 insertions(+), 0 deletions(-) diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c index 4a17f32..0b19864 100644 --- a/hw/acpi/ich9.c +++ b/hw/acpi/ich9.c @@ -223,6 +223,7 @@ void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm, 8); memory_region_add_subregion(&pm->io, ICH9_PMIO_SMI_EN, &pm->io_smi); + memory_region_set_owner(&pm->io, OBJECT(lpc_pci)); pm->irq = sci_irq; qemu_register_reset(pm_reset, pm); pm->powerdown_notifier.notify = pm_powerdown_req; diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index c4af1cc..d097592 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -433,6 +433,8 @@ static int piix4_pm_initfn(PCIDevice *dev) acpi_pm1_cnt_init(&s->ar, &s->io, s->s4_val); acpi_gpe_init(&s->ar, GPE_LEN); + memory_region_set_owner(&s->io, OBJECT(s)); + s->powerdown_notifier.notify = piix4_pm_powerdown_req; qemu_register_powerdown_notifier(&s->powerdown_notifier); @@ -672,10 +674,12 @@ static void piix4_acpi_system_hot_add_init(MemoryRegion *parent, { memory_region_init_io(&s->io_gpe, &piix4_gpe_ops, s, "apci-gpe0", GPE_LEN); + memory_region_set_owner(&s->io_gpe, OBJECT(s)); memory_region_add_subregion(parent, GPE_BASE, &s->io_gpe); memory_region_init_io(&s->io_pci, &piix4_pci_ops, s, "apci-pci-hotplug", PCI_HOTPLUG_SIZE); + memory_region_set_owner(&s->io_pci, OBJECT(s)); memory_region_add_subregion(parent, PCI_HOTPLUG_ADDR, &s->io_pci); pci_bus_hotplug(bus, piix4_device_hotplug, &s->dev.qdev); @@ -683,6 +687,7 @@ static void piix4_acpi_system_hot_add_init(MemoryRegion *parent, qemu_for_each_cpu(piix4_init_cpu_status, &s->gpe_cpu); memory_region_init_io(&s->io_cpu, &cpu_hotplug_ops, s, "apci-cpu-hotplug", PIIX4_PROC_LEN); + memory_region_set_owner(&s->io_cpu, OBJECT(s)); memory_region_add_subregion(parent, PIIX4_PROC_BASE, &s->io_cpu); s->cpu_added_notifier.notify = piix4_cpu_added_req; qemu_register_cpu_added_notifier(&s->cpu_added_notifier); diff --git a/hw/isa/apm.c b/hw/isa/apm.c index 5f21d21..376c564 100644 --- a/hw/isa/apm.c +++ b/hw/isa/apm.c @@ -97,6 +97,7 @@ void apm_init(PCIDevice *dev, APMState *apm, apm_ctrl_changed_t callback, /* ioport 0xb2, 0xb3 */ memory_region_init_io(&apm->io, &apm_ops, apm, "apm-io", 2); + memory_region_set_owner(&apm->io, OBJECT(dev)); memory_region_add_subregion(pci_address_space_io(dev), APM_CNT_IOPORT, &apm->io); } -- 1.7.1