Signed-off-by: Igor Mammedov <imamm...@redhat.com> --- hw/acpi/piix4.c | 14 +++++++++++++- include/hw/acpi/acpi.h | 2 ++ 2 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index e0d9270..a835981 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -18,6 +18,7 @@ * Contributions after 2012-01-13 are licensed under the terms of the * GNU GPL, version 2 or (at your option) any later version. */ +#include "qapi/visitor.h" #include "hw/hw.h" #include "hw/i386/pc.h" #include "hw/isa/apm.h" @@ -757,6 +758,14 @@ int piix4_mem_hotplug(DeviceState *hotplug_dev, DeviceState *dev, static int piix4_device_hotplug(DeviceState *qdev, DeviceState *dev, HotplugState state); +static void piix4_get_mem_io_base(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) +{ + PIIX4PMState *s = PIIX4_PM(obj); + + visit_type_uint16(v, &s->gpe_mem.port, name, errp); +} + static void piix4_acpi_system_hot_add_init(MemoryRegion *parent, PCIBus *bus, PIIX4PMState *s) { @@ -789,8 +798,11 @@ static void piix4_acpi_system_hot_add_init(MemoryRegion *parent, s->cpu_added_notifier.notify = piix4_cpu_added_req; qemu_register_cpu_added_notifier(&s->cpu_added_notifier); + s->gpe_mem.port = ACPI_MEMORY_HOTPLUG_BASE; + object_property_add(OBJECT(s), ACPI_MEMORY_HOTPLUG_IO_BASE_PROP, "int", + piix4_get_mem_io_base, NULL, NULL, NULL, NULL); acpi_memory_hotplug_init(OBJECT(s), &s->io_mem, &s->gpe_mem); - memory_region_add_subregion(parent, ACPI_MEMORY_HOTPLUG_BASE, &s->io_mem); + memory_region_add_subregion(parent, s->gpe_mem.port, &s->io_mem); } static void enable_device(PIIX4PMState *s, int slot) diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h index e5717df..95c608f 100644 --- a/include/hw/acpi/acpi.h +++ b/include/hw/acpi/acpi.h @@ -170,6 +170,7 @@ void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq, uint32_t gpe0_sts_mask); #define ACPI_MEMORY_HOTPLUG_IO_LEN 24 #define ACPI_MEMORY_HOTPLUG_BASE 0x0a00 +#define ACPI_MEMORY_HOTPLUG_IO_BASE_PROP "memory-hotplug-io-base" #define ACPI_MEMORY_HOTPLUG_STATUS 8 @@ -182,6 +183,7 @@ typedef struct MemStatus { } MemStatus; typedef struct MemHotplugState { + uint16_t port; uint32_t selector; uint32_t dev_count; MemStatus *devs; -- 1.7.1