]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/CpuHotplugSmm/QemuCpuhp.h
OvmfPkg/ResetSystemLib: clean up library dependencies
[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
25 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo\r
26 );\r
27\r
28UINT8\r
29QemuCpuhpReadCpuStatus (\r
30 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo\r
31 );\r
32\r
33UINT32\r
34QemuCpuhpReadCommandData (\r
35 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo\r
36 );\r
37\r
38VOID\r
39QemuCpuhpWriteCpuSelector (\r
40 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
41 IN UINT32 Selector\r
42 );\r
43\r
44VOID\r
45QemuCpuhpWriteCommand (\r
46 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
47 IN UINT8 Command\r
48 );\r
49\r
763840c9
LE
50EFI_STATUS\r
51QemuCpuhpCollectApicIds (\r
52 IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
53 IN UINT32 PossibleCpuCount,\r
54 IN UINT32 ApicIdCount,\r
55 OUT APIC_ID *PluggedApicIds,\r
56 OUT UINT32 *PluggedCount,\r
57 OUT APIC_ID *ToUnplugApicIds,\r
58 OUT UINT32 *ToUnplugCount\r
59 );\r
60\r
590f5f09 61#endif // QEMU_CPUHP_H_\r