| /** @file | |
| Simple wrapper functions and utility functions that access QEMU's modern CPU | |
| hotplug register block. | |
| These functions manipulate some of the registers described in | |
| "docs/specs/acpi_cpu_hotplug.txt" in the QEMU source. IO Ports are accessed | |
| via EFI_MM_CPU_IO_PROTOCOL. If a protocol call fails, these functions don't | |
| return. | |
| Copyright (c) 2020, Red Hat, Inc. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #pragma once | |
| #include <Protocol/MmCpuIo.h> // EFI_MM_CPU_IO_PROTOCOL | |
| #include <Uefi/UefiBaseType.h> // EFI_STATUS | |
| #include "ApicId.h" // APIC_ID | |
| UINT32 | |
| QemuCpuhpReadCommandData2 ( | |
| IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo | |
| ); | |
| UINT8 | |
| QemuCpuhpReadCpuStatus ( | |
| IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo | |
| ); | |
| UINT32 | |
| QemuCpuhpReadCommandData ( | |
| IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo | |
| ); | |
| VOID | |
| QemuCpuhpWriteCpuSelector ( | |
| IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo, | |
| IN UINT32 Selector | |
| ); | |
| VOID | |
| QemuCpuhpWriteCpuStatus ( | |
| IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo, | |
| IN UINT8 CpuStatus | |
| ); | |
| VOID | |
| QemuCpuhpWriteCommand ( | |
| IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo, | |
| IN UINT8 Command | |
| ); | |
| EFI_STATUS | |
| QemuCpuhpCollectApicIds ( | |
| IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo, | |
| IN UINT32 PossibleCpuCount, | |
| IN UINT32 ApicIdCount, | |
| OUT APIC_ID *PluggedApicIds, | |
| OUT UINT32 *PluggedCount, | |
| OUT APIC_ID *ToUnplugApicIds, | |
| OUT UINT32 *ToUnplugSelectors, | |
| OUT UINT32 *ToUnplugCount | |
| ); |