Newer
Older
AMI-Aptio-BIOS-Reversed / PurleyPlatPkg / Platform / Dxe / PlatformCpuPolicy / PlatformCpuPolicy.h
@Ajax Dong Ajax Dong 2 days ago 12 KB Full restructure
/** @file
  PlatformCpuPolicy.h -- Header for PlatformCpuPolicy

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __PLATFORMCPUPOLICY_H__
#define __PLATFORMCPUPOLICY_H__

#include "../uefi_headers/Uefi.h"

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
SerialPortSetBaudRate(
  VOID
);

EFI_STATUS
EFIAPI
SerialPortWrite(
  VOID
);

EFI_STATUS
EFIAPI
ZeroMem(
  VOID
);

EFI_STATUS
EFIAPI
InternalZeroMem(
  VOID
);

EFI_STATUS
EFIAPI
MsrReadRange(
  VOID
);

EFI_STATUS
EFIAPI
IoWrite8(
  VOID
);

EFI_STATUS
EFIAPI
IoRead8(
  VOID
);

EFI_STATUS
EFIAPI
IoRead16(
  VOID
);

EFI_STATUS
EFIAPI
IoWrite16(
  VOID
);

EFI_STATUS
EFIAPI
PlatformCpuPolicyEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
DetectAndSetUartBaudRate(
  VOID
);

EFI_STATUS
EFIAPI
PlatformCpuPolicyInit(
  VOID
);

EFI_STATUS
EFIAPI
GetPcdValue(
  VOID
);

EFI_STATUS
EFIAPI
SetPcdValue(
  VOID
);

EFI_STATUS
EFIAPI
GetConfigTable(
  VOID
);

EFI_STATUS
EFIAPI
ConfigureSocketIdInfo(
  VOID
);

EFI_STATUS
EFIAPI
AllocateIedTraceBuffer(
  VOID
);

EFI_STATUS
EFIAPI
SetupPpmStructures(
  VOID
);

EFI_STATUS
EFIAPI
InstallPlatformCpuPolicy(
  VOID
);

EFI_STATUS
EFIAPI
TlsAuthConfigExtractConfig(
  VOID
);

EFI_STATUS
EFIAPI
TlsCaCertificateRouteConfig(
  VOID
);

EFI_STATUS
EFIAPI
TlsCaCertificateCallback(
  VOID
);

EFI_STATUS
EFIAPI
GetSetupVariables(
  VOID
);

EFI_STATUS
EFIAPI
DebugPrint(
  VOID
);

EFI_STATUS
EFIAPI
AssertHandler(
  VOID
);

EFI_STATUS
EFIAPI
AsciiStrCpyS(
  VOID
);

EFI_STATUS
EFIAPI
AsciiStrLen(
  VOID
);

EFI_STATUS
EFIAPI
AsciiVSPrint(
  VOID
);

EFI_STATUS
EFIAPI
AsciiSPrint(
  VOID
);

EFI_STATUS
EFIAPI
Data (stored in .data section)(
  VOID
);

EFI_STATUS
EFIAPI
interface pointers (populated by PlatformCpuPolicyInit)(
  VOID
);

EFI_STATUS
EFIAPI
gImageHandle      = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
ptr(
  VOID
);

EFI_STATUS
EFIAPI
located protocol pointers(
  VOID
);

EFI_STATUS
EFIAPI
*mPcdProtocol     = NULL;  // PCD protocol(
  VOID
);

EFI_STATUS
EFIAPI
PCI USRA protocol(
  VOID
);

EFI_STATUS
EFIAPI
list pointer(
  VOID
);

EFI_STATUS
EFIAPI
initialized flag(
  VOID
);

EFI_STATUS
EFIAPI
ctl hook protocol(
  VOID
);

EFI_STATUS
EFIAPI
policy data (from HOB + PCD)(
  VOID
);

EFI_STATUS
EFIAPI
gCpuPolicyData;           // Base address of CPU policy data(
  VOID
);

EFI_STATUS
EFIAPI
register interface ptr(
  VOID
);

EFI_STATUS
EFIAPI
topology and configuration arrays(
  VOID
);

EFI_STATUS
EFIAPI
*gSocketNameTable[4];     // Socket name table for debug(
  VOID
);

EFI_STATUS
EFIAPI
ID map (2 per socket)(
  VOID
);

EFI_STATUS
EFIAPI
of active sockets(
  VOID
);

EFI_STATUS
EFIAPI
socket configuration val(
  VOID
);

EFI_STATUS
EFIAPI
gPpmBuffer;(
  VOID
);

EFI_STATUS
EFIAPI
token space GUID structure(
  VOID
);

EFI_STATUS
EFIAPI
gPcdTokenSpace;(
  VOID
);

EFI_STATUS
EFIAPI
declarations for internal helpers(
  VOID
);

EFI_STATUS
EFIAPI
wrapper functions (linked from BaseLib)(
  VOID
);

EFI_STATUS
EFIAPI
stosb sequence on Buffer with Size count.(
  VOID
);

EFI_STATUS
EFIAPI
is a leaf function (no callees), 0x20 bytes.(
  VOID
);

EFI_STATUS
EFIAPI
-- accesses MSR via PCI or direct rdmsr(
  VOID
);

EFI_STATUS
EFIAPI
to a protocol call depending on socket.(
  VOID
);

EFI_STATUS
EFIAPI
Entry Point(
  VOID
);

EFI_STATUS
EFIAPI
1: Initialize globals, locate protocols(
  VOID
);

EFI_STATUS
EFIAPI
(ImageHandle, SystemTable);(
  VOID
);

EFI_STATUS
EFIAPI
2: Install CPU platform policy(
  VOID
);

EFI_STATUS
EFIAPI
InstallPlatformCpuPolicy ();(
  VOID
);

EFI_STATUS
EFIAPI
Initialization(
  VOID
);

EFI_STATUS
EFIAPI
CMOS high byte of baud configuration(
  VOID
);

EFI_STATUS
EFIAPI
(RTC_INDEX_PORT, CMOS_BAUD_HIGH);(
  VOID
);

EFI_STATUS
EFIAPI
baud rate from CMOS nibble(
  VOID
);

EFI_STATUS
EFIAPI
(CmosByte) {(
  VOID
);

EFI_STATUS
EFIAPI
divisor: 0x1C200 / BaudRate(
  VOID
);

EFI_STATUS
EFIAPI
= 115200 / BaudRate;(
  VOID
);

EFI_STATUS
EFIAPI
UART base: check if COM1 (0x3F8) or COM2 (0x2F8)(
  VOID
);

EFI_STATUS
EFIAPI
offset 0x5C bit 0 selects COM2 if set.(
  VOID
);

EFI_STATUS
EFIAPI
= UART_BASE_PORT;(
  VOID
);

EFI_STATUS
EFIAPI
if UART is already configured for the correct divisor(
  VOID
);

EFI_STATUS
EFIAPI
= __inbyte (UartBase + 3);  // LCR(
  VOID
);

EFI_STATUS
EFIAPI
DLAB(
  VOID
);

EFI_STATUS
EFIAPI
LCR(
  VOID
);

EFI_STATUS
EFIAPI
reconfigure if the divisor doesn't match AND the UART is(
  VOID
);

EFI_STATUS
EFIAPI
(LSR bits 6 and 5 indicate THR/TEMT empty)(
  VOID
);

EFI_STATUS
EFIAPI
(CurrentDivisor != (UINT16)Divisor || (LcrShadow & 0x3F) != 3) {(
  VOID
);

EFI_STATUS
EFIAPI
for UART to be ready(
  VOID
);

EFI_STATUS
EFIAPI
((__inbyte (UartBase + 5) & 0x60) != 0x60);(
  VOID
);

EFI_STATUS
EFIAPI
new divisor(
  VOID
);

EFI_STATUS
EFIAPI
(UartBase + 3, 0x80);                // set DLAB(
  VOID
);

EFI_STATUS
EFIAPI
__outbyte (UartBase,     (UINT8)Divisor);        // LSB(
  VOID
);

EFI_STATUS
EFIAPI
FCR(
  VOID
);

EFI_STATUS
EFIAPI
FIFO(
  VOID
);

EFI_STATUS
EFIAPI
MCR(
  VOID
);

EFI_STATUS
EFIAPI
UEFI global pointers(
  VOID
);

EFI_STATUS
EFIAPI
= ImageHandle;(
  VOID
);

EFI_STATUS
EFIAPI
UART debug output (detect and set baud rate)(
  VOID
);

EFI_STATUS
EFIAPI
();(
  VOID
);

EFI_STATUS
EFIAPI
the EFI_DS (Driver Services) protocol via config table(
  VOID
);

EFI_STATUS
EFIAPI
= GetConfigTable (&gEfiDsGuid, (VOID **)&gBootServices);(
  VOID
);

EFI_STATUS
EFIAPI
the PCD protocol (required for platform configuration)(
  VOID
);

EFI_STATUS
EFIAPI
= GetPcdProtocol ();(
  VOID
);

EFI_STATUS
EFIAPI
the MM PCI USRA protocol for PCI config space access(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->LocateProtocol ((
  VOID
);

EFI_STATUS
EFIAPI
the HOB list(
  VOID
);

EFI_STATUS
EFIAPI
the SMM Ctl Hook protocol pointer(
  VOID
);

EFI_STATUS
EFIAPI
= GetPcdProtocol ();  // reuse for token space reference(
  VOID
);

EFI_STATUS
EFIAPI
CPU policy MSR value (token 5 -> qword_5B00)(
  VOID
);

EFI_STATUS
EFIAPI
= GetPcdProtocol ()->GetPcdValue (5);(
  VOID
);

EFI_STATUS
EFIAPI
Protocol Access(
  VOID
);

EFI_STATUS
EFIAPI
Table / HOB Lookup(
  VOID
);

EFI_STATUS
EFIAPI
ID Configuration(
  VOID
);

EFI_STATUS
EFIAPI
((DEBUG_INFO, "::SocketCount %08x\n", MAX_SOCKET_COUNT));(
  VOID
);

EFI_STATUS
EFIAPI
the CPU_SOCKET_ID_INFO PCD(
  VOID
);

EFI_STATUS
EFIAPI
socket ID data into platform policy structure(
  VOID
);

EFI_STATUS
EFIAPI
socket IDs: for each socket that is present, copy its PPIN(
  VOID
);

EFI_STATUS
EFIAPI
the socket ID table; otherwise mark as -1 (disabled socket).(
  VOID
);

EFI_STATUS
EFIAPI
(SocketIndex = 0; SocketIndex < MAX_SOCKET_COUNT; SocketIndex++) {(
  VOID
);

EFI_STATUS
EFIAPI
socket configuration from MSR 11(
  VOID
);

EFI_STATUS
EFIAPI
(CPU_POLICY_MSR_11, 1, &gSocketConfig, 0, 0, 0);(
  VOID
);

EFI_STATUS
EFIAPI
topology-based encoding to socket ID table(
  VOID
);

EFI_STATUS
EFIAPI
not present(
  VOID
);

EFI_STATUS
EFIAPI
more information — can't determine mask(
  VOID
);

EFI_STATUS
EFIAPI
((DEBUG_INFO, "::Need more info to make sure we can support!!!\n"));(
  VOID
);

EFI_STATUS
EFIAPI
Trace Buffer Allocation(
  VOID
);

EFI_STATUS
EFIAPI
the IED trace size(
  VOID
);

EFI_STATUS
EFIAPI
((
  VOID
);

EFI_STATUS
EFIAPI
{(
  VOID
);

EFI_STATUS
EFIAPI
failed — halve the size and retry(
  VOID
);

EFI_STATUS
EFIAPI
>>= 1;(
  VOID
);

EFI_STATUS
EFIAPI
the buffer to a 2 MB boundary(
  VOID
);

EFI_STATUS
EFIAPI
((BufferAddress & 0x100000) != 0) {(
  VOID
);

EFI_STATUS
EFIAPI
the allocated buffer and tag it as "INTEL RSVD"(
  VOID
);

EFI_STATUS
EFIAPI
the IED base address and size into the system address map(
  VOID
);

EFI_STATUS
EFIAPI
each present socket(
  VOID
);

EFI_STATUS
EFIAPI
IED base (in MB units) to system address map register(
  VOID
);

EFI_STATUS
EFIAPI
IED size (in MB units) to system address map register(
  VOID
);

EFI_STATUS
EFIAPI
(Processor Power Management) Structure Setup(
  VOID
);

EFI_STATUS
EFIAPI
CPU policy HOB(
  VOID
);

EFI_STATUS
EFIAPI
= GetHobList ();(
  VOID
);

EFI_STATUS
EFIAPI
socket count from the CPU policy protocol(
  VOID
);

EFI_STATUS
EFIAPI
socket name table (array of CHAR16 pointers for debug)(
  VOID
);

EFI_STATUS
EFIAPI
= AllocatePool (SocketCount * sizeof (CHAR16 *));(
  VOID
);

EFI_STATUS
EFIAPI
PPM data buffers (8 bytes per socket)(
  VOID
);

EFI_STATUS
EFIAPI
= AllocatePool (SocketCount * 8);(
  VOID
);

EFI_STATUS
EFIAPI
the name buffer and report out-of-resources(
  VOID
);

EFI_STATUS
EFIAPI
((DEBUG_ERROR, "\nEFI_OUT_OF_RESOURCES!!! AllocatePool() returned NULL pointer.\n"));(
  VOID
);

EFI_STATUS
EFIAPI
socket name table(
  VOID
);

EFI_STATUS
EFIAPI
(Index = 0; Index < SocketCount; Index++) {(
  VOID
);

EFI_STATUS
EFIAPI
in the name from a static table:(
  VOID
);

EFI_STATUS
EFIAPI
data: set to "UNKNOWN" initially(
  VOID
);

EFI_STATUS
EFIAPI
- was L"CPU1" etc(
  VOID
);

EFI_STATUS
EFIAPI
PPM buffers with PCD system(
  VOID
);

EFI_STATUS
EFIAPI
(((
  VOID
);

EFI_STATUS
EFIAPI
Platform CPU Policy Installation(
  VOID
);

EFI_STATUS
EFIAPI
the CPU policy HOB(
  VOID
);

EFI_STATUS
EFIAPI
PCD protocol interface(
  VOID
);

EFI_STATUS
EFIAPI
IED trace size from PCD or HOB(
  VOID
);

EFI_STATUS
EFIAPI
= Policy->IedTraceSize;(
  VOID
);

EFI_STATUS
EFIAPI
MB default(
  VOID
);

EFI_STATUS
EFIAPI
IED trace buffer for socket 0 (BSP)(
  VOID
);

EFI_STATUS
EFIAPI
= AllocateIedTraceBuffer (IedTraceSize);(
  VOID
);

EFI_STATUS
EFIAPI
= SetupPpmStructures ();(
  VOID
);

EFI_STATUS
EFIAPI
= (UINT32)(AsmReadMsr64 (0x13FE) >> 32);  // AYP debug scratchpad7(
  VOID
);

EFI_STATUS
EFIAPI
stepping(
  VOID
);

EFI_STATUS
EFIAPI
= (Policy->MemoryMode == 2LM_MODE);(
  VOID
);

EFI_STATUS
EFIAPI
MONITOR/MWAIT via MSR or CPU policy register(
  VOID
);

EFI_STATUS
EFIAPI
(Policy->NmFwEfficientBoot) {(
  VOID
);

EFI_STATUS
EFIAPI
Efficient Boot frequency MSR(
  VOID
);

EFI_STATUS
EFIAPI
(MSR_NM_FW_EFFICIENT_BOOST, Policy->EfficientBootFrequency);(
  VOID
);

EFI_STATUS
EFIAPI
Performance Boot frequency MSR(
  VOID
);

EFI_STATUS
EFIAPI
(MSR_NM_FW_PERF_BOOST, Policy->PerformanceBootFrequency);(
  VOID
);

EFI_STATUS
EFIAPI
current per-socket HWPM/PBF values from MSR(
  VOID
);

EFI_STATUS
EFIAPI
= AsmReadMsr64 (MSR_HWPM_PBF_CONFIG);(
  VOID
);

EFI_STATUS
EFIAPI
= Policy->PbfEnabled;(
  VOID
);

EFI_STATUS
EFIAPI
= Policy->PolicyEx1;(
  VOID
);

EFI_STATUS
EFIAPI
the final MSR value for the CPU policy(
  VOID
);

EFI_STATUS
EFIAPI
(MSR_CPU_POLICY_EX1, CpuPolicyEx1);(
  VOID
);

EFI_STATUS
EFIAPI
the current TlsCaCertificate variable(
  VOID
);

EFI_STATUS
EFIAPI
= 0;(
  VOID
);

EFI_STATUS
EFIAPI
the binary variable data to an HII config string(
  VOID
);

EFI_STATUS
EFIAPI
return via Results(
  VOID
);

EFI_STATUS
EFIAPI
(VariableData != NULL) {(
  VOID
);

EFI_STATUS
EFIAPI
config implementation(
  VOID
);

EFI_STATUS
EFIAPI
Variable Setup for NVRAM storage(
  VOID
);

EFI_STATUS
EFIAPI
the SetupLib protocol interface(
  VOID
);

EFI_STATUS
EFIAPI
the combined variable buffer(
  VOID
);

EFI_STATUS
EFIAPI
(&gVariableStorage, sizeof (gVariableStorage));(
  VOID
);

EFI_STATUS
EFIAPI
the static variable table and read each variable(
  VOID
);

EFI_STATUS
EFIAPI
= &gSetupVariableTable;(
  VOID
);

EFI_STATUS
EFIAPI
= ((SETUP_PROTOCOL *)SetupProtocol)->GetVariable ((
  VOID
);

EFI_STATUS
EFIAPI
UEFI Runtime Services GetVariable directly(
  VOID
);

EFI_STATUS
EFIAPI
= AllocatePool (VarSize);(
  VOID
);

EFI_STATUS
EFIAPI
= gRT->SetVariable ((
  VOID
);

EFI_STATUS
EFIAPI
(SetupLibReady) {(
  VOID
);

EFI_STATUS
EFIAPI
+= VarSize;(
  VOID
);

EFI_STATUS
EFIAPI
Output Helpers(
  VOID
);

EFI_STATUS
EFIAPI
BIOS debug level from CMOS 0x4B(
  VOID
);

EFI_STATUS
EFIAPI
= __inbyte (0x70);(
  VOID
);

EFI_STATUS
EFIAPI
= (*(UINT8 *)0xFDAF0490 & 2) | 1;(
  VOID
);

EFI_STATUS
EFIAPI
(BiosDebugLevel) {(
  VOID
);

EFI_STATUS
EFIAPI
((DebugLevel & ErrorLevel) != 0) {(
  VOID
);

EFI_STATUS
EFIAPI
the string(
  VOID
);

EFI_STATUS
EFIAPI
(Buffer, sizeof (Buffer), Format, VaList);(
  VOID
);

EFI_STATUS
EFIAPI
to serial port(
  VOID
);

EFI_STATUS
EFIAPI
= AsciiStrLen (Buffer);(
  VOID
);

EFI_STATUS
EFIAPI
(TRUE) {(
  VOID
);

EFI_STATUS
EFIAPI
until THR (Transmitter Holding Register) is empty(
  VOID
);

EFI_STATUS
EFIAPI
((__inbyte (UART_BASE_PORT + 5) & 0x20) == 0);(
  VOID
);

EFI_STATUS
EFIAPI
(UART_BASE_PORT, Buffer[Index]);(
  VOID
);

EFI_STATUS
EFIAPI
functions imported from BaseLib / BaseMemoryLib(
  VOID
);

EFI_STATUS
EFIAPI
(StartOfBuffer, BufferSize, FormatString, VaList);(
  VOID
);

EFI_STATUS
EFIAPI
variable table for setup(
  VOID
);

EFI_STATUS
EFIAPI
definitions table for GetSetupVariables(
  VOID
);

EFI_STATUS
EFIAPI
SETUP_VARIABLE  mSetupVariableTable[] = {(
  VOID
);

EFI_STATUS
EFIAPI
Trace buffer size(
  VOID
);

EFI_STATUS
EFIAPI
configuration(
  VOID
);

EFI_STATUS
EFIAPI
//(
  VOID
);

EFI_STATUS
EFIAPI
global variable storage(
  VOID
);

EFI_STATUS
EFIAPI
UINT8  mGlobalVariableStorage[0x2A3B];(
  VOID
);

#endif /* __PLATFORMCPUPOLICY_H__ */