2 * QEMU ACPI hotplug utilities
4 * Copyright (C) 2016 Red Hat Inc
7 * Igor Mammedov <imammedo@redhat.com>
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.
15 #include "hw/qdev-core.h"
16 #include "hw/acpi/acpi.h"
17 #include "hw/acpi/aml-build.h"
18 #include "hw/boards.h"
19 #include "hw/hotplug.h"
21 typedef struct AcpiCpuStatus
{
31 typedef struct CPUHotplugState
{
32 MemoryRegion ctrl_reg
;
39 void acpi_cpu_plug_cb(HotplugHandler
*hotplug_dev
,
40 CPUHotplugState
*cpu_st
, DeviceState
*dev
, Error
**errp
);
42 void acpi_cpu_unplug_request_cb(HotplugHandler
*hotplug_dev
,
43 CPUHotplugState
*cpu_st
,
44 DeviceState
*dev
, Error
**errp
);
46 void acpi_cpu_unplug_cb(CPUHotplugState
*cpu_st
,
47 DeviceState
*dev
, Error
**errp
);
49 void cpu_hotplug_hw_init(MemoryRegion
*as
, Object
*owner
,
50 CPUHotplugState
*state
, hwaddr base_addr
);
52 typedef struct CPUHotplugFeatures
{
53 bool acpi_1_compatible
;
59 typedef void (*build_madt_cpu_fn
)(int uid
, const CPUArchIdList
*apic_ids
,
60 GArray
*entry
, bool force_enabled
);
62 void build_cpus_aml(Aml
*table
, MachineState
*machine
, CPUHotplugFeatures opts
,
63 build_madt_cpu_fn build_madt_cpu
, hwaddr io_base
,
65 const char *event_handler_method
);
67 void acpi_cpu_ospm_status(CPUHotplugState
*cpu_st
, ACPIOSTInfoList
***list
);
69 extern const VMStateDescription vmstate_cpu_hotplug
;
70 #define VMSTATE_CPU_HOTPLUG(cpuhp, state) \
71 VMSTATE_STRUCT(cpuhp, state, 1, \
72 vmstate_cpu_hotplug, CPUHotplugState)