summaryrefslogtreecommitdiffstats
path: root/PrmPkg/PrmConfigDxe/PrmConfigDxe.c
diff options
context:
space:
mode:
Diffstat (limited to 'PrmPkg/PrmConfigDxe/PrmConfigDxe.c')
-rw-r--r--PrmPkg/PrmConfigDxe/PrmConfigDxe.c39
1 files changed, 28 insertions, 11 deletions
diff --git a/PrmPkg/PrmConfigDxe/PrmConfigDxe.c b/PrmPkg/PrmConfigDxe/PrmConfigDxe.c
index cb38146bc9..7215c2e1dc 100644
--- a/PrmPkg/PrmConfigDxe/PrmConfigDxe.c
+++ b/PrmPkg/PrmConfigDxe/PrmConfigDxe.c
@@ -28,8 +28,8 @@
STATIC UINTN mMaxRuntimeMmioRangeCount;
STATIC UINTN mMaxStaticDataBufferCount;
-STATIC PRM_RUNTIME_MMIO_RANGES **mRuntimeMmioRanges;
-STATIC PRM_DATA_BUFFER ***mStaticDataBuffers;
+GLOBAL_REMOVE_IF_UNREFERENCED STATIC PRM_RUNTIME_MMIO_RANGES **mRuntimeMmioRanges;
+GLOBAL_REMOVE_IF_UNREFERENCED STATIC PRM_DATA_BUFFER ***mStaticDataBuffers;
/**
Converts the runtime memory range physical addresses to virtual addresses.
@@ -178,37 +178,41 @@ StoreVirtualMemoryAddressChangePointers (
)
{
EFI_STATUS Status;
- UINTN BufferIndex;
UINTN HandleCount;
UINTN HandleIndex;
UINTN RangeIndex;
+#ifdef ALLOCATE_CONTEXT_BUFFER_IN_FW
+ UINTN BufferIndex;
UINTN StaticDataBufferIndex;
+ PRM_CONTEXT_BUFFER *CurrentContextBuffer;
+#endif
EFI_HANDLE *HandleBuffer;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
- PRM_CONTEXT_BUFFER *CurrentContextBuffer;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
RangeIndex = 0;
+#ifdef ALLOCATE_CONTEXT_BUFFER_IN_FW
StaticDataBufferIndex = 0;
- mRuntimeMmioRanges = AllocateRuntimeZeroPool (sizeof (*mRuntimeMmioRanges) * mMaxRuntimeMmioRangeCount);
- if (mRuntimeMmioRanges == NULL && mMaxRuntimeMmioRangeCount > 0) {
+ mStaticDataBuffers = AllocateRuntimeZeroPool (sizeof (*mStaticDataBuffers) * mMaxStaticDataBufferCount);
+ if (mStaticDataBuffers == NULL && mMaxStaticDataBufferCount > 0) {
DEBUG ((
DEBUG_ERROR,
- " %a %a: Memory allocation for runtime MMIO pointer array failed.\n",
+ " %a %a: Memory allocation for PRM static data buffer pointer array failed.\n",
_DBGMSGID_,
__FUNCTION__
));
ASSERT (FALSE);
return;
}
+#endif
- mStaticDataBuffers = AllocateRuntimeZeroPool (sizeof (*mStaticDataBuffers) * mMaxStaticDataBufferCount);
- if (mStaticDataBuffers == NULL && mMaxStaticDataBufferCount > 0) {
+ mRuntimeMmioRanges = AllocateRuntimeZeroPool (sizeof (*mRuntimeMmioRanges) * mMaxRuntimeMmioRangeCount);
+ if (mRuntimeMmioRanges == NULL && mMaxRuntimeMmioRangeCount > 0) {
DEBUG ((
DEBUG_ERROR,
- " %a %a: Memory allocation for PRM static data buffer pointer array failed.\n",
+ " %a %a: Memory allocation for runtime MMIO pointer array failed.\n",
_DBGMSGID_,
__FUNCTION__
));
@@ -236,6 +240,7 @@ StoreVirtualMemoryAddressChangePointers (
continue;
}
+#ifdef ALLOCATE_CONTEXT_BUFFER_IN_FW
for (BufferIndex = 0; BufferIndex < PrmConfigProtocol->ModuleContextBuffers.BufferCount; BufferIndex++) {
CurrentContextBuffer = &(PrmConfigProtocol->ModuleContextBuffers.Buffer[BufferIndex]);
@@ -256,6 +261,7 @@ StoreVirtualMemoryAddressChangePointers (
mStaticDataBuffers[StaticDataBufferIndex++] = &CurrentContextBuffer->StaticDataBuffer;
}
}
+#endif
if (PrmConfigProtocol->ModuleContextBuffers.RuntimeMmioRanges != NULL) {
if (RangeIndex >= mMaxRuntimeMmioRangeCount) {
Status = EFI_BUFFER_TOO_SMALL;
@@ -280,6 +286,7 @@ StoreVirtualMemoryAddressChangePointers (
__FUNCTION__,
RangeIndex
));
+#ifdef ALLOCATE_CONTEXT_BUFFER_IN_FW
DEBUG ((
DEBUG_INFO,
" %a %a: %d static buffers saved for future virtual memory conversion.\n",
@@ -287,6 +294,7 @@ StoreVirtualMemoryAddressChangePointers (
__FUNCTION__,
StaticDataBufferIndex
));
+#endif
}
}
@@ -388,12 +396,14 @@ PrmConfigVirtualAddressChangeEvent (
{
UINTN Index;
+#ifdef ALLOCATE_CONTEXT_BUFFER_IN_FW
//
// Convert static data buffer pointers
//
for (Index = 0; Index < mMaxStaticDataBufferCount; Index++) {
gRT->ConvertPointer (0x0, (VOID **) mStaticDataBuffers[Index]);
}
+#endif
//
// Convert runtime MMIO ranges
@@ -484,7 +494,7 @@ PrmConfigEndOfDxeNotification (
if (PrmConfigProtocol->ModuleContextBuffers.RuntimeMmioRanges != NULL) {
DEBUG ((
DEBUG_INFO,
- " %a %a: Found %d PRM runtime MMIO ranges to convert.\n",
+ " %a %a: Found %d PRM runtime MMIO ranges.\n",
_DBGMSGID_,
__FUNCTION__,
PrmConfigProtocol->ModuleContextBuffers.RuntimeMmioRanges->Count
@@ -541,6 +551,13 @@ PrmConfigEntryPoint (
);
ASSERT_EFI_ERROR (Status);
+ DEBUG ((DEBUG_INFO, " %a %a: Context buffers will be allocated in ", _DBGMSGID_, __FUNCTION__));
+#ifdef ALLOCATE_CONTEXT_BUFFER_IN_FW
+ DEBUG ((DEBUG_INFO, "firmware.\n"));
+#else
+ DEBUG ((DEBUG_INFO, "the operating system.\n"));
+#endif
+
//
// Register a notification function for virtual address change
//