]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/CpuHotplugSmm/QemuCpuhp.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / OvmfPkg / CpuHotplugSmm / QemuCpuhp.h
CommitLineData
590f5f09 1/** @file\r
763840c9
LE
2 Simple wrapper functions and utility functions that access QEMU's modern CPU\r
3 hotplug register block.\r
590f5f09 4\r
763840c9 5 These functions manipulate some of the registers described in\r
590f5f09
LE
6 "docs/specs/acpi_cpu_hotplug.txt" in the QEMU source. IO Ports are accessed\r
7 via EFI_MM_CPU_IO_PROTOCOL. If a protocol call fails, these functions don't\r
8 return.\r
9\r
10 Copyright (c) 2020, Red Hat, Inc.\r
11\r
12 SPDX-License-Identifier: BSD-2-Clause-Patent\r
13**/\r
14\r
15#ifndef QEMU_CPUHP_H_\r
16#define QEMU_CPUHP_H_\r
17\r
18#include <Protocol/MmCpuIo.h> // EFI_MM_CPU_IO_PROTOCOL\r
763840c9
LE
19#include <Uefi/UefiBaseType.h> // EFI_STATUS\r
20\r
21#include "ApicId.h" // APIC_ID\r
590f5f09
LE
22\r
23UINT32\r
24QemuCpuhpReadCommandData2 (\r
ac0a286f 25 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo\r
590f5f09
LE
26 );\r
27\r
28UINT8\r
29QemuCpuhpReadCpuStatus (\r
ac0a286f 30 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo\r
590f5f09
LE
31 );\r
32\r
33UINT32\r
34QemuCpuhpReadCommandData (\r
ac0a286f 35 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo\r
590f5f09
LE
36 );\r
37\r
38VOID\r
39QemuCpuhpWriteCpuSelector (\r
ac0a286f
MK
40 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
41 IN UINT32 Selector\r
590f5f09
LE
42 );\r
43\r
2d92e052
AA
44VOID\r
45QemuCpuhpWriteCpuStatus (\r
ac0a286f
MK
46 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
47 IN UINT8 CpuStatus\r
2d92e052
AA
48 );\r
49\r
590f5f09
LE
50VOID\r
51QemuCpuhpWriteCommand (\r
ac0a286f
MK
52 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
53 IN UINT8 Command\r
590f5f09
LE
54 );\r
55\r
763840c9
LE
56EFI_STATUS\r
57QemuCpuhpCollectApicIds (\r
ac0a286f
MK
58 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
59 IN UINT32 PossibleCpuCount,\r
60 IN UINT32 ApicIdCount,\r
61 OUT APIC_ID *PluggedApicIds,\r
62 OUT UINT32 *PluggedCount,\r
63 OUT APIC_ID *ToUnplugApicIds,\r
64 OUT UINT32 *ToUnplugSelectors,\r
65 OUT UINT32 *ToUnplugCount\r
763840c9
LE
66 );\r
67\r
590f5f09 68#endif // QEMU_CPUHP_H_\r