PrmPkg: Remove the concept of OS services

OS services are no longer supported as of the current PRM design.

1. Removes OS services from PrmSampleHardwareAccessModule
2. Removes the PrmOsServices.h file

Cc: Andrew Fish <afish@apple.com>
Cc: Kang Gao <kang.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Michael Kubacki <michael.kubacki@microsoft.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Benjamin You <benjamin.you@intel.com>
Cc: Liu Yun <yun.y.liu@intel.com>
Cc: Ankit Sinha <ankit.sinha@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Acked-by: Michael D Kinney <michael.d.kinney@intel.com>
Acked-by: Liming Gao <gaoliming@byosoft.com.cn>
Acked-by: Leif Lindholm <quic_llindhol@quicinc.com>
Reviewed-by: Ankit Sinha <ankit.sinha@intel.com>
This commit is contained in:
Michael Kubacki
2020-11-17 09:37:25 -08:00
committed by mergify[bot]
parent 050b2ba27d
commit 88f3d734f5
6 changed files with 8 additions and 434 deletions

View File

@ -15,7 +15,6 @@
#include <PrmDataBuffer.h> #include <PrmDataBuffer.h>
#include <PrmExportDescriptor.h> #include <PrmExportDescriptor.h>
#include <PrmMmio.h> #include <PrmMmio.h>
#include <PrmOsServices.h>
/** /**
Macro that provides a condensed form of a PRM Handler. Macro that provides a condensed form of a PRM Handler.

View File

@ -1,45 +0,0 @@
/** @file
Definitions for the Platform Runtime Mechanism (PRM) OS Services.
Note: OS Services have been removed from POR. This file has been reduced to just debug print
OS Service for use during PRM enabling.
Copyright (c) Microsoft Corporation
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef PRM_OS_SERVICES_H_
#define PRM_OS_SERVICES_H_
#include <Uefi.h>
typedef struct _PRM_OS_SERVICES PRM_OS_SERVICES;
//
// PRM OS Services function signatures
//
typedef
VOID
(EFIAPI *PRM_OS_SERVICE_DEBUG_PRINT) (
IN CONST CHAR8 *String
);
#pragma pack(push, 1)
//
// PRM OS Services table
//
struct _PRM_OS_SERVICES {
// Structure information
UINT16 MajorVersion;
UINT16 MinorVersion;
// OS Services
PRM_OS_SERVICE_DEBUG_PRINT DebugPrint;
};
#pragma pack(pop)
#endif

View File

@ -129,10 +129,7 @@
# PRM Sample Modules # PRM Sample Modules
# #
$(PLATFORM_PACKAGE)/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiParameterBufferModule.inf $(PLATFORM_PACKAGE)/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiParameterBufferModule.inf
$(PLATFORM_PACKAGE)/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareAccessModule.inf { $(PLATFORM_PACKAGE)/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareAccessModule.inf
<LibraryClasses>
DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
}
$(PLATFORM_PACKAGE)/Samples/PrmSampleContextBufferModule/PrmSampleContextBufferModule.inf $(PLATFORM_PACKAGE)/Samples/PrmSampleContextBufferModule/PrmSampleContextBufferModule.inf
# #

View File

@ -12,7 +12,6 @@
#include <Library/BaseLib.h> #include <Library/BaseLib.h>
#include <Library/MtrrLib.h> #include <Library/MtrrLib.h>
#include <Library/PrintLib.h>
#include <Library/UefiLib.h> #include <Library/UefiLib.h>
#include <Register/Intel/ArchitecturalMsr.h> #include <Register/Intel/ArchitecturalMsr.h>
@ -27,21 +26,12 @@
// {2120cd3c-848b-4d8f-abbb-4b74ce64ac89} // {2120cd3c-848b-4d8f-abbb-4b74ce64ac89}
#define MSR_ACCESS_MICROCODE_SIGNATURE_PRM_HANDLER_GUID {0x2120cd3c, 0x848b, 0x4d8f, {0xab, 0xbb, 0x4b, 0x74, 0xce, 0x64, 0xac, 0x89}} #define MSR_ACCESS_MICROCODE_SIGNATURE_PRM_HANDLER_GUID {0x2120cd3c, 0x848b, 0x4d8f, {0xab, 0xbb, 0x4b, 0x74, 0xce, 0x64, 0xac, 0x89}}
// {5d28b4e7-3867-4aee-aa09-51fc282c3b22}
#define MSR_PRINT_MICROCODE_SIGNATURE_PRM_HANDLER_GUID {0x5d28b4e7, 0x3867, 0x4aee, {0xaa, 0x09, 0x51, 0xfc, 0x28, 0x2c, 0x3b, 0x22}}
// {ea0935a7-506b-4159-bbbb-48deeecb6f58} // {ea0935a7-506b-4159-bbbb-48deeecb6f58}
#define MSR_ACCESS_MTRR_DUMP_PRM_HANDLER_GUID {0xea0935a7, 0x506b, 0x4159, {0xbb, 0xbb, 0x48, 0xde, 0xee, 0xcb, 0x6f, 0x58}} #define MSR_ACCESS_MTRR_DUMP_PRM_HANDLER_GUID {0xea0935a7, 0x506b, 0x4159, {0xbb, 0xbb, 0x48, 0xde, 0xee, 0xcb, 0x6f, 0x58}}
// {4b64b702-4d2b-4dfe-ac5a-0b4110a2ca47}
#define MSR_PRINT_MTRR_DUMP_PRM_HANDLER_GUID {0x4b64b702, 0x4d2b, 0x4dfe, {0xac, 0x5a, 0x0b, 0x41, 0x10, 0xa2, 0xca, 0x47}}
// {1bd1bda9-909a-4614-9699-25ec0c2783f7} // {1bd1bda9-909a-4614-9699-25ec0c2783f7}
#define MMIO_ACCESS_HPET_PRM_HANDLER_GUID {0x1bd1bda9, 0x909a, 0x4614, {0x96, 0x99, 0x25, 0xec, 0x0c, 0x27, 0x83, 0xf7}} #define MMIO_ACCESS_HPET_PRM_HANDLER_GUID {0x1bd1bda9, 0x909a, 0x4614, {0x96, 0x99, 0x25, 0xec, 0x0c, 0x27, 0x83, 0xf7}}
// {8a0efdde-78d0-45f0-aea0-c28245c7e1db}
#define MMIO_PRINT_HPET_PRM_HANDLER_GUID {0x8a0efdde, 0x78d0, 0x45f0, {0xae, 0xa0, 0xc2, 0x82, 0x45, 0xc7, 0xe1, 0xdb}}
// //
// BEGIN: MtrrLib internal library globals and function prototypes here for testing // BEGIN: MtrrLib internal library globals and function prototypes here for testing
// //
@ -133,27 +123,19 @@ MtrrLibApplyVariableMtrrs (
/** /**
Accesses MTRR values including architectural and variable MTRRs. Accesses MTRR values including architectural and variable MTRRs.
If the optional OsServiceDebugPrint function pointer is provided that function is
used to print the MTRR settings.
@param[in] OsServiceDebugPrint A pointer to an OS-provided debug print function.
**/ **/
VOID VOID
EFIAPI EFIAPI
AccessAllMtrrs ( AccessAllMtrrs (
IN PRM_OS_SERVICE_DEBUG_PRINT OsServiceDebugPrint OPTIONAL VOID
) )
{ {
MTRR_SETTINGS LocalMtrrs; MTRR_SETTINGS LocalMtrrs;
MTRR_SETTINGS *Mtrrs; MTRR_SETTINGS *Mtrrs;
UINTN Index;
UINTN RangeCount; UINTN RangeCount;
UINT64 MtrrValidBitsMask; UINT64 MtrrValidBitsMask;
UINT64 MtrrValidAddressMask; UINT64 MtrrValidAddressMask;
UINT32 VariableMtrrCount; UINT32 VariableMtrrCount;
BOOLEAN ContainVariableMtrr;
CHAR8 DebugMessage[256];
MTRR_MEMORY_RANGE Ranges[ MTRR_MEMORY_RANGE Ranges[
MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * ARRAY_SIZE (Mtrrs->Variables.Mtrr) + 1 MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * ARRAY_SIZE (Mtrrs->Variables.Mtrr) + 1
@ -169,66 +151,6 @@ AccessAllMtrrs (
MtrrGetAllMtrrs (&LocalMtrrs); MtrrGetAllMtrrs (&LocalMtrrs);
Mtrrs = &LocalMtrrs; Mtrrs = &LocalMtrrs;
//
// Dump RAW MTRR contents
//
if (OsServiceDebugPrint != NULL) {
OsServiceDebugPrint (" MTRR Settings:\n");
OsServiceDebugPrint (" =============\n");
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" MTRR Default Type: %016lx\n",
Mtrrs->MtrrDefType
);
OsServiceDebugPrint (&DebugMessage[0]);
}
if (OsServiceDebugPrint != NULL) {
for (Index = 0; Index < MTRR_NUMBER_OF_FIXED_MTRR; Index++) {
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" Fixed MTRR[%02d] : %016lx\n",
Index,
Mtrrs->Fixed.Mtrr[Index]
);
OsServiceDebugPrint (&DebugMessage[0]);
}
ContainVariableMtrr = FALSE;
for (Index = 0; Index < VariableMtrrCount; Index++) {
if ((Mtrrs->Variables.Mtrr[Index].Mask & BIT11) == 0) {
//
// If mask is not valid, then do not display range
//
continue;
}
ContainVariableMtrr = TRUE;
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" Variable MTRR[%02d]: Base=%016lx Mask=%016lx\n",
Index,
Mtrrs->Variables.Mtrr[Index].Base,
Mtrrs->Variables.Mtrr[Index].Mask
);
OsServiceDebugPrint (&DebugMessage[0]);
}
if (!ContainVariableMtrr) {
OsServiceDebugPrint (" Variable MTRR : None.\n");
}
OsServiceDebugPrint ("\n");
}
//
// Dump MTRR setting in ranges
//
if (OsServiceDebugPrint != NULL) {
OsServiceDebugPrint (" Memory Ranges:\n");
OsServiceDebugPrint (" ====================================\n");
}
MtrrLibInitializeMtrrMask (&MtrrValidBitsMask, &MtrrValidAddressMask); MtrrLibInitializeMtrrMask (&MtrrValidBitsMask, &MtrrValidAddressMask);
Ranges[0].BaseAddress = 0; Ranges[0].BaseAddress = 0;
Ranges[0].Length = MtrrValidBitsMask + 1; Ranges[0].Length = MtrrValidBitsMask + 1;
@ -245,19 +167,6 @@ AccessAllMtrrs (
); );
MtrrLibApplyFixedMtrrs (&Mtrrs->Fixed, Ranges, ARRAY_SIZE (Ranges), &RangeCount); MtrrLibApplyFixedMtrrs (&Mtrrs->Fixed, Ranges, ARRAY_SIZE (Ranges), &RangeCount);
if (OsServiceDebugPrint != NULL) {
for (Index = 0; Index < RangeCount; Index++) {
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" %a:%016lx-%016lx\n",
mMtrrMemoryCacheTypeShortName[Ranges[Index].Type],
Ranges[Index].BaseAddress, Ranges[Index].BaseAddress + Ranges[Index].Length - 1
);
OsServiceDebugPrint (&DebugMessage[0]);
}
}
} }
/** /**
@ -300,104 +209,15 @@ HpetRead (
/** /**
Accesses HPET configuration information. Accesses HPET configuration information.
If the optional OsServiceDebugPrint function pointer is provided that function is
used to print HPET settings.
@param[in] OsServiceDebugPrint A pointer to an OS-provided debug print function
**/ **/
VOID VOID
EFIAPI EFIAPI
AccessHpetConfiguration ( AccessHpetConfiguration (
IN PRM_OS_SERVICE_DEBUG_PRINT OsServiceDebugPrint VOID
) )
{ {
UINTN TimerIndex; HpetRead (HPET_GENERAL_CAPABILITIES_ID_OFFSET);
HPET_GENERAL_CAPABILITIES_ID_REGISTER HpetGeneralCapabilities; HpetRead (HPET_GENERAL_CONFIGURATION_OFFSET);
HPET_GENERAL_CONFIGURATION_REGISTER HpetGeneralConfiguration;
CHAR8 DebugMessage[256];
HpetGeneralCapabilities.Uint64 = HpetRead (HPET_GENERAL_CAPABILITIES_ID_OFFSET);
HpetGeneralConfiguration.Uint64 = HpetRead (HPET_GENERAL_CONFIGURATION_OFFSET);
if (OsServiceDebugPrint != NULL) {
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" HPET Base Address = 0x%08x\n",
HPET_BASE_ADDRESS
);
OsServiceDebugPrint (&DebugMessage[0]);
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" HPET_GENERAL_CAPABILITIES_ID = 0x%016lx\n",
HpetGeneralCapabilities
);
OsServiceDebugPrint (&DebugMessage[0]);
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" HPET_GENERAL_CONFIGURATION = 0x%016lx\n",
HpetGeneralConfiguration.Uint64
);
OsServiceDebugPrint (&DebugMessage[0]);
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" HPET_GENERAL_INTERRUPT_STATUS = 0x%016lx\n",
HpetRead (HPET_GENERAL_INTERRUPT_STATUS_OFFSET)
);
OsServiceDebugPrint (&DebugMessage[0]);
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" HPET_MAIN_COUNTER = 0x%016lx\n",
HpetRead (HPET_MAIN_COUNTER_OFFSET)
);
OsServiceDebugPrint (&DebugMessage[0]);
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" HPET Main Counter Period = %d (fs)\n",
HpetGeneralCapabilities.Bits.CounterClockPeriod
);
OsServiceDebugPrint (&DebugMessage[0]);
for (TimerIndex = 0; TimerIndex <= HpetGeneralCapabilities.Bits.NumberOfTimers; TimerIndex++) {
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" HPET_TIMER%d_CONFIGURATION = 0x%016lx\n",
TimerIndex,
HpetRead (HPET_TIMER_CONFIGURATION_OFFSET + TimerIndex * HPET_TIMER_STRIDE)
);
OsServiceDebugPrint (&DebugMessage[0]);
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" HPET_TIMER%d_COMPARATOR = 0x%016lx\n",
TimerIndex,
HpetRead (HPET_TIMER_COMPARATOR_OFFSET + TimerIndex * HPET_TIMER_STRIDE)
);
OsServiceDebugPrint (&DebugMessage[0]);
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" HPET_TIMER%d_MSI_ROUTE = 0x%016lx\n",
TimerIndex,
HpetRead (HPET_TIMER_MSI_ROUTE_OFFSET + TimerIndex * HPET_TIMER_STRIDE)
);
OsServiceDebugPrint (&DebugMessage[0]);
}
}
} }
/** /**
@ -419,34 +239,6 @@ GetMicrocodeSignature (
return BiosSignIdMsr.Bits.MicrocodeUpdateSignature; return BiosSignIdMsr.Bits.MicrocodeUpdateSignature;
} }
/**
Prints the microcode update signature as read from architectural MSR 0x8B.
**/
VOID
EFIAPI
PrintMicrocodeUpdateSignature (
IN PRM_OS_SERVICE_DEBUG_PRINT OsServiceDebugPrint
)
{
UINT32 MicrocodeSignature;
CHAR8 DebugMessage[256];
if (OsServiceDebugPrint == NULL) {
return;
}
MicrocodeSignature = GetMicrocodeSignature ();
AsciiSPrint (
&DebugMessage[0],
ARRAY_SIZE (DebugMessage),
" Signature read = 0x%x.\n",
MicrocodeSignature
);
OsServiceDebugPrint (&DebugMessage[0]);
}
/** /**
A sample Platform Runtime Mechanism (PRM) handler. A sample Platform Runtime Mechanism (PRM) handler.
@ -473,40 +265,6 @@ PRM_HANDLER_EXPORT (MsrAccessMicrocodeSignaturePrmHandler)
return EFI_SUCCESS; return EFI_SUCCESS;
} }
/**
A sample Platform Runtime Mechanism (PRM) handler.
This sample handler attempts to read the microcode update signature MSR and print the result to a debug message.
@param[in] ParameterBuffer A pointer to the PRM handler parameter buffer
@param[in] ContextBUffer A pointer to the PRM handler context buffer
@retval EFI_STATUS The PRM handler executed successfully.
@retval Others An error occurred in the PRM handler.
**/
PRM_HANDLER_EXPORT (MsrPrintMicrocodeSignaturePrmHandler)
{
PRM_OS_SERVICE_DEBUG_PRINT OsServiceDebugPrint;
if (ParameterBuffer == NULL) {
return EFI_INVALID_PARAMETER;
}
// The OS debug print service is assumed to be at the beginning of ParameterBuffer
OsServiceDebugPrint = *((PRM_OS_SERVICE_DEBUG_PRINT *) ParameterBuffer);
if (OsServiceDebugPrint == NULL) {
return EFI_INVALID_PARAMETER;
}
OsServiceDebugPrint ("Hardware Access MsrAccessMicrocodeSignaturePrmHandler entry.\n");
OsServiceDebugPrint (" Attempting to read the Microcode Update Signature MSR (0x8B)...\n");
PrintMicrocodeUpdateSignature (OsServiceDebugPrint);
OsServiceDebugPrint ("Hardware Access MsrAccessMicrocodeSignaturePrmHandler exit.\n");
return EFI_SUCCESS;
}
/** /**
A sample Platform Runtime Mechanism (PRM) handler. A sample Platform Runtime Mechanism (PRM) handler.
@ -521,46 +279,11 @@ PRM_HANDLER_EXPORT (MsrPrintMicrocodeSignaturePrmHandler)
**/ **/
PRM_HANDLER_EXPORT (MsrAccessMtrrDumpPrmHandler) PRM_HANDLER_EXPORT (MsrAccessMtrrDumpPrmHandler)
{ {
AccessAllMtrrs (NULL); AccessAllMtrrs ();
return EFI_SUCCESS; return EFI_SUCCESS;
} }
/**
A sample Platform Runtime Mechanism (PRM) handler.
This sample handler attempts to read the current MTRR settings and print the result to a debug message.
@param[in] ParameterBuffer A pointer to the PRM handler parameter buffer
@param[in] ContextBUffer A pointer to the PRM handler context buffer
@retval EFI_STATUS The PRM handler executed successfully.
@retval Others An error occurred in the PRM handler.
**/
PRM_HANDLER_EXPORT (MsrPrintMtrrDumpPrmHandler)
{
PRM_OS_SERVICE_DEBUG_PRINT OsServiceDebugPrint;
if (ParameterBuffer == NULL) {
return EFI_INVALID_PARAMETER;
}
// In the POC, the OS debug print service is assumed to be at the beginning of ParameterBuffer
OsServiceDebugPrint = *((PRM_OS_SERVICE_DEBUG_PRINT *) ParameterBuffer);
if (OsServiceDebugPrint == NULL) {
return EFI_INVALID_PARAMETER;
}
OsServiceDebugPrint ("Hardware Access MsrAccessMtrrDumpPrmHandler entry.\n");
OsServiceDebugPrint (" Attempting to dump MTRR values:\n");
AccessAllMtrrs (OsServiceDebugPrint);
OsServiceDebugPrint ("Hardware Access MsrAccessMtrrDumpPrmHandler exit.\n");
return EFI_SUCCESS;
}
/** /**
A sample Platform Runtime Mechanism (PRM) handler. A sample Platform Runtime Mechanism (PRM) handler.
@ -575,41 +298,7 @@ PRM_HANDLER_EXPORT (MsrPrintMtrrDumpPrmHandler)
**/ **/
PRM_HANDLER_EXPORT (MmioAccessHpetPrmHandler) PRM_HANDLER_EXPORT (MmioAccessHpetPrmHandler)
{ {
AccessHpetConfiguration (NULL); AccessHpetConfiguration ();
return EFI_SUCCESS;
}
/**
A sample Platform Runtime Mechanism (PRM) handler.
This sample handler attempts to read from a HPET MMIO resource and print the result to a debug message.
@param[in] ParameterBuffer A pointer to the PRM handler parameter buffer
@param[in] ContextBUffer A pointer to the PRM handler context buffer
@retval EFI_STATUS The PRM handler executed successfully.
@retval Others An error occurred in the PRM handler.
**/
PRM_HANDLER_EXPORT (MmioPrintHpetPrmHandler)
{
PRM_OS_SERVICE_DEBUG_PRINT OsServiceDebugPrint;
if (ParameterBuffer == NULL) {
return EFI_INVALID_PARAMETER;
}
// An OS debug print service is assumed to be at the beginning of ParameterBuffer
OsServiceDebugPrint = *((PRM_OS_SERVICE_DEBUG_PRINT *) ParameterBuffer);
if (OsServiceDebugPrint == NULL) {
return EFI_INVALID_PARAMETER;
}
OsServiceDebugPrint ("Hardware Access MmioPrintHpetPrmHandler entry.\n");
OsServiceDebugPrint (" Attempting to read HPET configuration...\n");
AccessHpetConfiguration (OsServiceDebugPrint);
OsServiceDebugPrint ("Hardware Access MmioPrintHpetPrmHandler exit.\n");
return EFI_SUCCESS; return EFI_SUCCESS;
} }
@ -620,10 +309,7 @@ PRM_HANDLER_EXPORT (MmioPrintHpetPrmHandler)
PRM_MODULE_EXPORT ( PRM_MODULE_EXPORT (
PRM_HANDLER_EXPORT_ENTRY (MSR_ACCESS_MICROCODE_SIGNATURE_PRM_HANDLER_GUID, MsrAccessMicrocodeSignaturePrmHandler), PRM_HANDLER_EXPORT_ENTRY (MSR_ACCESS_MICROCODE_SIGNATURE_PRM_HANDLER_GUID, MsrAccessMicrocodeSignaturePrmHandler),
PRM_HANDLER_EXPORT_ENTRY (MSR_ACCESS_MTRR_DUMP_PRM_HANDLER_GUID, MsrAccessMtrrDumpPrmHandler), PRM_HANDLER_EXPORT_ENTRY (MSR_ACCESS_MTRR_DUMP_PRM_HANDLER_GUID, MsrAccessMtrrDumpPrmHandler),
PRM_HANDLER_EXPORT_ENTRY (MMIO_ACCESS_HPET_PRM_HANDLER_GUID, MmioAccessHpetPrmHandler), PRM_HANDLER_EXPORT_ENTRY (MMIO_ACCESS_HPET_PRM_HANDLER_GUID, MmioAccessHpetPrmHandler)
PRM_HANDLER_EXPORT_ENTRY (MSR_PRINT_MICROCODE_SIGNATURE_PRM_HANDLER_GUID, MsrPrintMicrocodeSignaturePrmHandler),
PRM_HANDLER_EXPORT_ENTRY (MSR_PRINT_MTRR_DUMP_PRM_HANDLER_GUID, MsrPrintMtrrDumpPrmHandler),
PRM_HANDLER_EXPORT_ENTRY (MMIO_PRINT_HPET_PRM_HANDLER_GUID, MmioPrintHpetPrmHandler)
); );
/** /**

View File

@ -32,7 +32,6 @@
[LibraryClasses] [LibraryClasses]
BaseLib BaseLib
MtrrLib MtrrLib
PrintLib
UefiDriverEntryPoint UefiDriverEntryPoint
UefiLib UefiLib

View File

@ -128,65 +128,3 @@ and interact with their PRM modules.
* Runtime MMIO Range(s) Required: Yes * Runtime MMIO Range(s) Required: Yes
* Physical Base Address: 0xFED00000 * Physical Base Address: 0xFED00000
* Length: 0x1000 * Length: 0x1000
#### Handler: MSR Print Microcode Signature PRM Handler
* Name: `MsrPrintMicrocodeSignaturePrmHandler`
* GUID: `5d28b4e7-3867-4aee-aa09-51fc282c3b22`
* Actions:
* Use the provided print function to print the loaded microcode signature at MSR 0x8B.
* Parameter Buffer Required: Yes
* Parameter Buffer Contents:
```c
typedef struct {
PRM_OS_SERVICE_DEBUG_PRINT *
} SAMPLE_OSDEBUGPRINT_PARAMETER_BUFFER;
```
* Context Buffer Required: No
* Runtime MMIO Range(s) Required: No
#### Handler: MSR Print MTRR Dump PRM Handler
* Name: `MsrPrintMtrrDumpPrmHandler`
* GUID: `4b64b702-4d2b-4dfe-ac5a-0b4110a2ca47`
* Actions:
* Use the provided print function to print the fixed and variable MTRR values using MSRs.
* Parameter Buffer Required: Yes
* Parameter Buffer Contents:
```c
typedef struct {
PRM_OS_SERVICE_DEBUG_PRINT *
} SAMPLE_OSDEBUGPRINT_PARAMETER_BUFFER;
```
* Context Buffer Required: No
* Runtime MMIO Range(s) Required: No
#### Handler: HPET MMIO Print PRM Handler
* Name: `MmioPrintHpetPrmHandler`
* GUID: `8a0efdde-78d0-45f0-aea0-c28245c7e1db`
* Actions:
* Use the provided print function to print some HPET registers using MMIO at 0xFED00000.
* Parameter Buffer Required: Yes
* Parameter Buffer Contents:
```c
typedef struct {
PRM_OS_SERVICE_DEBUG_PRINT *
} SAMPLE_OSDEBUGPRINT_PARAMETER_BUFFER;
```
* Context Buffer Required: No
* Runtime MMIO Range(s) Required: Yes
* Physical Base Address: 0xFED00000
* Length: 0x1000