1 #ifndef QEMU_HW_ACPI_MEMORY_HOTPLUG_H 2 #define QEMU_HW_ACPI_MEMORY_HOTPLUG_H 3 4 #include "hw/qdev-core.h" 5 #include "hw/acpi/acpi.h" 6 #include "migration/vmstate.h" 7 8 #define ACPI_MEMORY_HOTPLUG_STATUS 8 9 10 typedef struct MemStatus { 11 DeviceState *dimm; 12 bool is_enabled; 13 bool is_inserting; 14 uint32_t ost_event; 15 uint32_t ost_status; 16 } MemStatus; 17 18 typedef struct MemHotplugState { 19 bool is_enabled; /* true if memory hotplug is supported */ 20 MemoryRegion io; 21 uint32_t selector; 22 uint32_t dev_count; 23 MemStatus *devs; 24 } MemHotplugState; 25 26 void acpi_memory_hotplug_init(MemoryRegion *as, Object *owner, 27 MemHotplugState *state); 28 29 void acpi_memory_plug_cb(ACPIREGS *ar, qemu_irq irq, MemHotplugState *mem_st, 30 DeviceState *dev, Error **errp); 31 32 extern const VMStateDescription vmstate_memory_hotplug; 33 #define VMSTATE_MEMORY_HOTPLUG(memhp, state) \ 34 VMSTATE_STRUCT(memhp, state, 1, \ 35 vmstate_memory_hotplug, MemHotplugState) 36 37 #endif 38