2 Simple wrapper functions and utility functions that access QEMU's modern CPU
3 hotplug register block.
5 These functions manipulate some of the registers described in
6 "docs/specs/acpi_cpu_hotplug.txt" in the QEMU source. IO Ports are accessed
7 via EFI_MM_CPU_IO_PROTOCOL. If a protocol call fails, these functions don't
10 Copyright (c) 2020, Red Hat, Inc.
12 SPDX-License-Identifier: BSD-2-Clause-Patent
18 #include <Protocol/MmCpuIo.h> // EFI_MM_CPU_IO_PROTOCOL
19 #include <Uefi/UefiBaseType.h> // EFI_STATUS
21 #include "ApicId.h" // APIC_ID
24 QemuCpuhpReadCommandData2 (
25 IN CONST EFI_MM_CPU_IO_PROTOCOL
*MmCpuIo
29 QemuCpuhpReadCpuStatus (
30 IN CONST EFI_MM_CPU_IO_PROTOCOL
*MmCpuIo
34 QemuCpuhpReadCommandData (
35 IN CONST EFI_MM_CPU_IO_PROTOCOL
*MmCpuIo
39 QemuCpuhpWriteCpuSelector (
40 IN CONST EFI_MM_CPU_IO_PROTOCOL
*MmCpuIo
,
45 QemuCpuhpWriteCpuStatus (
46 IN CONST EFI_MM_CPU_IO_PROTOCOL
*MmCpuIo
,
51 QemuCpuhpWriteCommand (
52 IN CONST EFI_MM_CPU_IO_PROTOCOL
*MmCpuIo
,
57 QemuCpuhpCollectApicIds (
58 IN CONST EFI_MM_CPU_IO_PROTOCOL
*MmCpuIo
,
59 IN UINT32 PossibleCpuCount
,
60 IN UINT32 ApicIdCount
,
61 OUT APIC_ID
*PluggedApicIds
,
62 OUT UINT32
*PluggedCount
,
63 OUT APIC_ID
*ToUnplugApicIds
,
64 OUT UINT32
*ToUnplugSelectors
,
65 OUT UINT32
*ToUnplugCount
68 #endif // QEMU_CPUHP_H_