1 /* 2 * QEMU ACPI hotplug utilities 3 * 4 * Copyright (C) 2016 Red Hat Inc 5 * 6 * Authors: 7 * Igor Mammedov <imammedo@redhat.com> 8 * 9 * This work is licensed under the terms of the GNU GPL, version 2 or later. 10 * See the COPYING file in the top-level directory. 11 */ 12 #ifndef ACPI_CPU_H 13 #define ACPI_CPU_H 14 15 #include "hw/qdev-core.h" 16 #include "hw/acpi/acpi.h" 17 #include "hw/acpi/aml-build.h" 18 #include "hw/hotplug.h" 19 20 typedef struct AcpiCpuStatus { 21 struct CPUState *cpu; 22 uint64_t arch_id; 23 bool is_inserting; 24 } AcpiCpuStatus; 25 26 typedef struct CPUHotplugState { 27 MemoryRegion ctrl_reg; 28 uint32_t selector; 29 uint8_t command; 30 uint32_t dev_count; 31 AcpiCpuStatus *devs; 32 } CPUHotplugState; 33 34 void acpi_cpu_plug_cb(HotplugHandler *hotplug_dev, 35 CPUHotplugState *cpu_st, DeviceState *dev, Error **errp); 36 37 void cpu_hotplug_hw_init(MemoryRegion *as, Object *owner, 38 CPUHotplugState *state, hwaddr base_addr); 39 40 typedef struct CPUHotplugFeatures { 41 bool apci_1_compatible; 42 } CPUHotplugFeatures; 43 44 void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts, 45 hwaddr io_base, 46 const char *res_root, 47 const char *event_handler_method); 48 49 extern const VMStateDescription vmstate_cpu_hotplug; 50 #define VMSTATE_CPU_HOTPLUG(cpuhp, state) \ 51 VMSTATE_STRUCT(cpuhp, state, 1, \ 52 vmstate_cpu_hotplug, CPUHotplugState) 53 54 #endif 55