mirror of
https://github.com/qemu/qemu.git
synced 2024-12-03 00:33:39 +08:00
679dd1a957
For compatibility reasons PC/Q35 will start with legacy CPU hotplug interface by default but with new CPU hotplug AML code since 2.7 machine type. That way legacy firmware that doesn't use QEMU generated ACPI tables will be able to continue using legacy CPU hotplug interface. While new machine type, with firmware supporting QEMU provided ACPI tables, will generate new CPU hotplug AML, which will switch to new CPU hotplug interface when guest OS executes its _INI method on ACPI tables loading. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
/*
|
|
* QEMU ACPI hotplug utilities
|
|
*
|
|
* Copyright (C) 2013 Red Hat Inc
|
|
*
|
|
* Authors:
|
|
* Igor Mammedov <imammedo@redhat.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
#ifndef ACPI_HOTPLUG_H
|
|
#define ACPI_HOTPLUG_H
|
|
|
|
#include "hw/acpi/acpi.h"
|
|
#include "hw/acpi/pc-hotplug.h"
|
|
#include "hw/acpi/aml-build.h"
|
|
#include "hw/hotplug.h"
|
|
#include "hw/acpi/cpu.h"
|
|
|
|
typedef struct AcpiCpuHotplug {
|
|
Object *device;
|
|
MemoryRegion io;
|
|
uint8_t sts[ACPI_GPE_PROC_LEN];
|
|
} AcpiCpuHotplug;
|
|
|
|
void legacy_acpi_cpu_plug_cb(HotplugHandler *hotplug_dev,
|
|
AcpiCpuHotplug *g, DeviceState *dev, Error **errp);
|
|
|
|
void legacy_acpi_cpu_hotplug_init(MemoryRegion *parent, Object *owner,
|
|
AcpiCpuHotplug *gpe_cpu, uint16_t base);
|
|
|
|
void acpi_switch_to_modern_cphp(AcpiCpuHotplug *gpe_cpu,
|
|
CPUHotplugState *cpuhp_state,
|
|
uint16_t io_port);
|
|
|
|
void build_legacy_cpu_hotplug_aml(Aml *ctx, MachineState *machine,
|
|
uint16_t io_base);
|
|
#endif
|