[BOOTMGFW]

- EarlyPrint -> EfiPrintf, as it seems BL actually has this after all :) Change all callers to conform to it.
- Add common exit/failure path in BmMain. Now the fun begins.

svn path=/trunk/; revision=69103
This commit is contained in:
Alex Ionescu 2015-09-07 23:31:08 +00:00
parent 1f3874c43e
commit 1e3ceae73f
16 changed files with 162 additions and 116 deletions

View file

@ -24,28 +24,6 @@ LIST_ENTRY BlBadpListHead;
/* FUNCTIONS *****************************************************************/
/* HACKKKYYY */
EFI_SYSTEM_TABLE* g_SystemTable;
VOID
EarlyPrint(_In_ PWCHAR Format, ...)
{
WCHAR buffer[1024];
va_list args;
va_start(args, Format);
vswprintf(buffer, Format, args);
g_SystemTable->ConOut->OutputString(g_SystemTable->ConOut, L"\r");
g_SystemTable->ConOut->OutputString(g_SystemTable->ConOut, buffer);
g_SystemTable->BootServices->Stall(200000);
va_end(args);
}
/* END HACKKKYYY */
/*++
* @name InitializeLibrary
*
@ -131,7 +109,7 @@ InitializeLibrary (
LibraryParameters);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"MM init failed!\n");
EfiPrintf(L"MM init failed!\r\n");
goto Quickie;
}
@ -141,7 +119,7 @@ InitializeLibrary (
{
/* Destroy memory manager in phase 1 */
//BlpMmDestroy(1);
EarlyPrint(L"Firmware2 init failed!\n");
EfiPrintf(L"Firmware2 init failed!\r\n");
return Status;
}
@ -163,7 +141,7 @@ InitializeLibrary (
if (!NT_SUCCESS(Status))
{
/* Destroy memory manager in phase 1 */
EarlyPrint(L"TSC calibration failed\n");
EfiPrintf(L"TSC calibration failed\r\n");
//BlpMmDestroy(1);
return Status;
}
@ -174,7 +152,7 @@ InitializeLibrary (
if (!NT_SUCCESS(Status))
{
/* Destroy memory manager in phase 1 */
EarlyPrint(L"Arch2 init failed\n");
EfiPrintf(L"Arch2 init failed\r\n");
//BlpMmDestroy(1);
return Status;
}
@ -195,7 +173,7 @@ InitializeLibrary (
if (!NT_SUCCESS(Status))
{
/* Destroy memory manager in phase 1 and the event manager */
EarlyPrint(L"IO init failed\n");
EfiPrintf(L"IO init failed\r\n");
#ifdef BL_TPM_SUPPORT
if (EnSubsystemInitialized)
{
@ -240,7 +218,7 @@ InitializeLibrary (
}
#endif
//BlpMmDestroy(1);
EarlyPrint(L"Util init failed\n");
EfiPrintf(L"Util init failed\r\n");
return Status;
}
@ -407,3 +385,11 @@ BlInitializeLibrary(
return Status;
}
VOID
BlDestroyLibrary (
VOID
)
{
EfiPrintf(L"Destroy not yet implemented\r\n");
return;
}

View file

@ -30,8 +30,38 @@ EFI_GUID EfiLoadedImageProtocol = EFI_LOADED_IMAGE_PROTOCOL_GUID;
EFI_GUID EfiDevicePathProtocol = EFI_DEVICE_PATH_PROTOCOL_GUID;
EFI_GUID EfiSimpleTextInputExProtocol = EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID;
WCHAR BlScratchBuffer[8192];
/* FUNCTIONS *****************************************************************/
VOID
EfiPrintf (
_In_ PWCHAR Format,
...
)
{
va_list args;
va_start(args, Format);
/* Capture the buffer in our scratch pad, and NULL-terminate */
vsnwprintf(BlScratchBuffer, RTL_NUMBER_OF(BlScratchBuffer) - 1, Format, args);
BlScratchBuffer[RTL_NUMBER_OF(BlScratchBuffer) - 1] = UNICODE_NULL;
/* Check which mode we're in */
if (CurrentExecutionContext->Mode == BlRealMode)
{
/* Call EFI directly */
EfiConOut->OutputString(EfiConOut, BlScratchBuffer);
}
else
{
/* FIXME: @TODO: Not yet supported */
}
/* All done */
va_end(args);
}
NTSTATUS
EfiOpenProtocol (
_In_ EFI_HANDLE Handle,
@ -589,7 +619,7 @@ EfiGopSetMode (
if ((ModeChanged) && (NT_SUCCESS(Status)))
{
/* FIXME @TODO: Should be BlStatusPrint */
EarlyPrint(L"Console video mode set to 0x%x\r\n", Mode);
EfiPrintf(L"Console video mode set to 0x%x\r\r\n", Mode);
}
/* Convert the error to an NTSTATUS */
@ -670,6 +700,25 @@ EfiLocateHandleBuffer (
return EfiGetNtStatusCode(EfiStatus);
}
VOID
EfiResetSystem (
_In_ EFI_RESET_TYPE ResetType
)
{
BL_ARCH_MODE OldMode;
/* Are we in protected mode? */
OldMode = CurrentExecutionContext->Mode;
if (OldMode != BlRealMode)
{
/* FIXME: Not yet implemented */
return;
}
/* Call the EFI runtime */
EfiRT->ResetSystem(ResetType, EFI_SUCCESS, 0, NULL);
}
NTSTATUS
EfiAllocatePages (
_In_ ULONG Type,
@ -868,7 +917,7 @@ MmFwGetMemoryMap (
if (Status != STATUS_BUFFER_TOO_SMALL)
{
/* This should've failed because our buffer was too small, nothing else */
EarlyPrint(L"Got strange EFI status for memory map: %lx\n", Status);
EfiPrintf(L"Got strange EFI status for memory map: %lx\r\n", Status);
if (NT_SUCCESS(Status))
{
Status = STATUS_UNSUCCESSFUL;
@ -879,7 +928,7 @@ MmFwGetMemoryMap (
/* Add 4 more descriptors just in case things changed */
EfiMemoryMapSize += (4 * DescriptorSize);
Pages = BYTES_TO_PAGES(EfiMemoryMapSize);
EarlyPrint(L"Memory map size: %lx bytes, %d pages\n", EfiMemoryMapSize, Pages);
EfiPrintf(L"Memory map size: %lx bytes, %d pages\r\n", EfiMemoryMapSize, Pages);
/* Should we use EFI to grab memory? */
if (UseEfiBuffer)
@ -893,7 +942,7 @@ MmFwGetMemoryMap (
&EfiBuffer);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"EFI allocation failed: %lx\n", Status);
EfiPrintf(L"EFI allocation failed: %lx\r\n", Status);
goto Quickie;
}
@ -953,7 +1002,7 @@ MmFwGetMemoryMap (
/* So far so good? */
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"Failed to get EFI memory map: %lx\n", Status);
EfiPrintf(L"Failed to get EFI memory map: %lx\r\n", Status);
goto Quickie;
}
@ -961,7 +1010,7 @@ MmFwGetMemoryMap (
if (((EfiMemoryMapSize % DescriptorSize)) ||
(DescriptorSize < sizeof(EFI_MEMORY_DESCRIPTOR)))
{
EarlyPrint(L"Incorrect descriptor size\n");
EfiPrintf(L"Incorrect descriptor size\r\n");
Status = STATUS_UNSUCCESSFUL;
goto Quickie;
}
@ -971,7 +1020,7 @@ MmFwGetMemoryMap (
(BlpBootDevice->Local.Type == RamDiskDevice))
{
/* We don't handle this yet */
EarlyPrint(L"RAM boot not supported\n");
EfiPrintf(L"RAM boot not supported\r\n");
Status = STATUS_NOT_IMPLEMENTED;
goto Quickie;
}
@ -983,9 +1032,9 @@ MmFwGetMemoryMap (
/* Loop the EFI memory map */
#if 0
EarlyPrint(L"UEFI MEMORY MAP\n\n");
EarlyPrint(L"TYPE START END ATTRIBUTES\n");
EarlyPrint(L"===============================================================\n");
EfiPrintf(L"UEFI MEMORY MAP\n\r\n");
EfiPrintf(L"TYPE START END ATTRIBUTES\r\n");
EfiPrintf(L"===============================================================\r\n");
#endif
while (EfiMemoryMapSize != 0)
{
@ -1026,7 +1075,7 @@ MmFwGetMemoryMap (
goto LoopAgain;
}
#if 0
EarlyPrint(L"%08X 0x%016I64X-0x%016I64X 0x%I64X\n",
EfiPrintf(L"%08X 0x%016I64X-0x%016I64X 0x%I64X\r\n",
MemoryType,
StartPage << PAGE_SHIFT,
EndPage << PAGE_SHIFT,
@ -1057,7 +1106,7 @@ MmFwGetMemoryMap (
BL_MM_ADD_DESCRIPTOR_TRUNCATE_FLAG);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"Failed to add zero page descriptor: %lx\n", Status);
EfiPrintf(L"Failed to add zero page descriptor: %lx\r\n", Status);
break;
}
@ -1098,7 +1147,7 @@ MmFwGetMemoryMap (
BL_MM_ADD_DESCRIPTOR_TRUNCATE_FLAG);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"Failed to add 1MB descriptor: %lx\n", Status);
EfiPrintf(L"Failed to add 1MB descriptor: %lx\r\n", Status);
break;
}
@ -1111,7 +1160,7 @@ MmFwGetMemoryMap (
if (HaveRamDisk)
{
/* We don't handle this yet */
EarlyPrint(L"RAM boot not supported\n");
EfiPrintf(L"RAM boot not supported\r\n");
Status = STATUS_NOT_IMPLEMENTED;
goto Quickie;
}
@ -1144,7 +1193,7 @@ MmFwGetMemoryMap (
BL_MM_ADD_DESCRIPTOR_COALESCE_FLAG : 0);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"Failed to add full descriptor: %lx\n", Status);
EfiPrintf(L"Failed to add full descriptor: %lx\r\n", Status);
break;
}

View file

@ -43,7 +43,7 @@ DsppGraphicsDisabledByBcd (
VOID
)
{
//EarlyPrint(L"Disabling graphics\n");
//EarlyPrint(L"Disabling graphics\r\n");
return FALSE;
}
@ -75,7 +75,7 @@ DsppInitialize (
/* Display re-initialization not yet handled */
if (LibraryParameters.LibraryFlags & BL_LIBRARY_FLAG_REINITIALIZE_ALL)
{
EarlyPrint(L"Display path not handled\n");
EfiPrintf(L"Display path not handled\r\n");
return STATUS_NOT_SUPPORTED;
}
@ -111,7 +111,7 @@ DsppInitialize (
if (NT_SUCCESS(Status))
{
ConsoleGraphicalResolutionListFlags |= BL_DISPLAY_GRAPHICS_FORCED_VIDEO_MODE_FLAG;
EarlyPrint(L"Display selection not yet handled\n");
EfiPrintf(L"Display selection not yet handled\r\n");
return STATUS_NOT_IMPLEMENTED;
}
@ -127,7 +127,7 @@ DsppInitialize (
if (NT_SUCCESS(Status))
{
ConsoleGraphicalResolutionListFlags |= BL_DISPLAY_GRAPHICS_FORCED_HIGH_RES_MODE_FLAG;
EarlyPrint(L"High res mode not yet handled\n");
EfiPrintf(L"High res mode not yet handled\r\n");
return STATUS_NOT_IMPLEMENTED;
}
@ -142,7 +142,7 @@ DsppInitialize (
Status = ConsoleGraphicalConstruct(GraphicsConsole);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"GFX FAILED: %lx\n", Status);
EfiPrintf(L"GFX FAILED: %lx\r\n", Status);
BlMmFreeHeap(GraphicsConsole);
GraphicsConsole = NULL;
}
@ -157,7 +157,7 @@ DsppInitialize (
/* Are we using something else than the default mode? */
if (DisplayMode != &ConsoleGraphicalResolutionList[0])
{
EarlyPrint(L"Display path not handled\n");
EfiPrintf(L"Display path not handled\r\n");
return STATUS_NOT_SUPPORTED;
}
@ -217,7 +217,7 @@ DsppInitialize (
}
/* We have a remote console -- have to figure out how to use it*/
EarlyPrint(L"Display path not handled\n");
EfiPrintf(L"Display path not handled\r\n");
return STATUS_NOT_SUPPORTED;
}
@ -273,7 +273,7 @@ BlDisplayGetTextCellResolution (
if (DspGraphicalConsole)
{
/* Yep -- query it */
EarlyPrint(L"Not supported\n");
EfiPrintf(L"Not supported\r\n");
Status = STATUS_NOT_IMPLEMENTED;
}
}

View file

@ -212,7 +212,7 @@ ConsoleEfiGopOpen (
(PVOID*)&GopProtocol);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"GOP OPEN failed: %lx\n", Status);
EfiPrintf(L"GOP OPEN failed: %lx\r\n", Status);
return STATUS_NOT_SUPPORTED;
}
@ -220,7 +220,7 @@ ConsoleEfiGopOpen (
Status = EfiGopGetCurrentMode(GopProtocol, &CurrentMode, &ModeInformation);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"GOP mode failed: %lx\n", Status);
EfiPrintf(L"GOP mode failed: %lx\r\n", Status);
goto Quickie;
}
@ -273,7 +273,7 @@ ConsoleEfiGopOpen (
Quickie:
/* We failed, close the protocol and return the failure code */
EarlyPrint(L"Get format failed: %lx\n", Status);
EfiPrintf(L"Get format failed: %lx\r\n", Status);
EfiCloseProtocol(GraphicsConsole->Handle, &EfiGraphicsOutputProtocol);
return Status;
}

View file

@ -54,7 +54,7 @@ ConsoleEfiGraphicalOpenProtocol (
if (!NT_SUCCESS(Status))
{
/* Nothing supports this (no video card?) */
EarlyPrint(L"Status: %lx Count: %d\n", Status, HandleCount);
EfiPrintf(L"Status: %lx Count: %d\r\n", Status, HandleCount);
return STATUS_UNSUCCESSFUL;
}

View file

@ -348,7 +348,7 @@ ConsoleEfiTextFindModeFromAllowed (
}
/* Scan all the EFI modes */
EarlyPrint(L"Scanning through %d modes\n", MaxMode);
EfiPrintf(L"Scanning through %d modes\r\n", MaxMode);
for (MaxQueriedMode = 0, Mode = 0; Mode < MaxMode; Mode++)
{
/* Query information on this mode */
@ -359,7 +359,7 @@ ConsoleEfiTextFindModeFromAllowed (
&VRes)))
{
/* This mode was succesfully queried. Save the data */
EarlyPrint(L"EFI Firmware Supported Mode %d is H: %d V: %d\n", Mode, HRes, VRes);
EfiPrintf(L"EFI Firmware Supported Mode %d is H: %d V: %d\r\n", Mode, HRes, VRes);
ModeEntry->HRes = HRes;
ModeEntry->VRes = VRes;
ModeEntry->HRes2 = HRes;
@ -376,7 +376,7 @@ ConsoleEfiTextFindModeFromAllowed (
{
/* Check if the UEFI mode is compatible with our supported mode */
ModeEntry = &ModeList[MatchingMode];
EarlyPrint(L"H1: %d V1: %d - H2: %d - V2: %d\n", ModeEntry->HRes, ModeEntry->VRes, SupportedModeEntry->HRes, SupportedModeEntry->VRes);
EfiPrintf(L"H1: %d V1: %d - H2: %d - V2: %d\r\n", ModeEntry->HRes, ModeEntry->VRes, SupportedModeEntry->HRes, SupportedModeEntry->VRes);
if ((ModeEntry->HRes == SupportedModeEntry->HRes) &&
(ModeEntry->VRes == SupportedModeEntry->VRes))
{
@ -446,19 +446,19 @@ ConsoleFirmwareTextOpen (
if (!ConsolepFindResolution(&DisplayMode, ConsoleTextResolutionList, 1))
{
/* It isn't -- find a matching EFI mode for what we need */
EarlyPrint(L"In incorrect mode, scanning for right one\n");
EfiPrintf(L"In incorrect mode, scanning for right one\r\n");
Status = ConsoleEfiTextFindModeFromAllowed(EfiConOut,
ConsoleTextResolutionList,
1,
&Mode);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"Failed to find mode: %lx\n", Status);
EfiPrintf(L"Failed to find mode: %lx\r\n", Status);
return Status;
}
/* Set the new EFI mode */
EarlyPrint(L"Setting new mode: %d\n", Mode);
EfiPrintf(L"Setting new mode: %d\r\n", Mode);
Status = EfiConOutSetMode(EfiConOut, Mode);
if (!NT_SUCCESS(Status))
{

View file

@ -19,7 +19,7 @@ ConsoleEfiUgaOpen (
_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
)
{
EarlyPrint(L"UGA not implemented\n");
EfiPrintf(L"UGA not implemented\r\n");
return STATUS_NOT_IMPLEMENTED;
}

View file

@ -30,7 +30,7 @@ ConsoleGraphicalConstruct (
Status = ConsoleTextLocalConstruct(&GraphicsConsole->TextConsole, FALSE);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"Text failed: %lx\n", Status);
EfiPrintf(L"Text failed: %lx\r\n", Status);
return Status;
}
@ -42,12 +42,12 @@ ConsoleGraphicalConstruct (
if (!NT_SUCCESS(Status))
{
/* That failed, try an older EFI 1.02 UGA console */
EarlyPrint(L"GOP open failed!\n", Status);
EfiPrintf(L"GOP open failed!\r\n", Status);
Status = ConsoleEfiGraphicalOpenProtocol(GraphicsConsole, BlUgaConsole);
if (!NT_SUCCESS(Status))
{
/* That failed too, give up */
EarlyPrint(L"UGA failed!\n", Status);
EfiPrintf(L"UGA failed!\r\n", Status);
ConsoleTextLocalDestruct(&GraphicsConsole->TextConsole);
return STATUS_UNSUCCESSFUL;
}
@ -58,7 +58,7 @@ ConsoleGraphicalConstruct (
if (!NT_SUCCESS(Status))
{
/* Failed to enable it, undo everything */
EarlyPrint(L"Enable failed\n");
EfiPrintf(L"Enable failed\r\n");
ConsoleFirmwareGraphicalClose(GraphicsConsole);
ConsoleTextLocalDestruct(&GraphicsConsole->TextConsole);
return STATUS_UNSUCCESSFUL;

View file

@ -118,7 +118,7 @@ ConsoleTextLocalConstruct (
Status = ConsoleFirmwareTextOpen(TextConsole);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"Failed to activate console: %lx\n", Status);
EfiPrintf(L"Failed to activate console: %lx\r\n", Status);
return Status;
}
}
@ -138,7 +138,7 @@ ConsoleTextLocalConstruct (
if (!NT_SUCCESS(Status))
{
/* We failed, back down */
EarlyPrint(L"Failed to set console state: %lx\n", Status);
EfiPrintf(L"Failed to set console state: %lx\r\n", Status);
ConsoleFirmwareTextClose(TextConsole);
return Status;
}

View file

@ -187,3 +187,17 @@ BlUtlInitialize (
return STATUS_SUCCESS;
}
VOID
BlFwReboot (
VOID
)
{
#ifdef BL_KD_SUPPORTED
/* Stop the boot debugger*/
BlBdStop();
#endif
/* Reset the machine */
EfiResetSystem(EfiResetCold);
}

View file

@ -149,7 +149,7 @@ MmMdpSwitchToDynamicDescriptors (
_In_ ULONG Count
)
{
EarlyPrint(L"NOT SUPPORTED!!!\n");
EfiPrintf(L"NOT SUPPORTED!!!\r\n");
while (1);
}
@ -173,7 +173,7 @@ MmMdFreeDescriptor (
else
{
/* It's a dynamic descriptor, so free it */
EarlyPrint(L"Dynamic descriptors not yet supported\n");
EfiPrintf(L"Dynamic descriptors not yet supported\r\n");
Status = STATUS_NOT_IMPLEMENTED;
}
@ -250,7 +250,7 @@ MmMdInitByteGranularDescriptor (
/* If we're out of descriptors, bail out */
if (MmGlobalMemoryDescriptorsUsed >= MmGlobalMemoryDescriptorCount)
{
EarlyPrint(L"Out of descriptors!\n");
EfiPrintf(L"Out of descriptors!\r\n");
return NULL;
}
@ -295,13 +295,13 @@ MmMdpTruncateDescriptor (
/* Check for backward overlap */
if ((PreviousEntry != MdList->First) && (MemoryDescriptor->BasePage < PreviousEndPage))
{
EarlyPrint(L"Overlap detected -- this is unexpected on x86/x64 platforms\n");
EfiPrintf(L"Overlap detected -- this is unexpected on x86/x64 platforms\r\n");
}
/* Check for forward overlap */
if ((NextEntry != MdList->First) && (NextDescriptor->BasePage < EndPage))
{
EarlyPrint(L"Overlap detected -- this is unexpected on x86/x64 platforms\n");
EfiPrintf(L"Overlap detected -- this is unexpected on x86/x64 platforms\r\n");
}
/* Nothing to do */
@ -343,7 +343,7 @@ MmMdpCoalesceDescriptor (
((MemoryDescriptor->VirtualPage) && (PreviousDescriptor->VirtualPage) &&
(PreviousMappedEndPage == MemoryDescriptor->VirtualPage))))
{
EarlyPrint(L"Previous descriptor coalescible!\n");
EfiPrintf(L"Previous descriptor coalescible!\r\n");
}
/* CHeck if the current entry touches the next entry, and is compatible */
@ -355,7 +355,7 @@ MmMdpCoalesceDescriptor (
((MemoryDescriptor->VirtualPage) && (PreviousDescriptor->VirtualPage) &&
(MappedEndPage == NextDescriptor->VirtualPage))))
{
EarlyPrint(L"Next descriptor coalescible!\n");
EfiPrintf(L"Next descriptor coalescible!\r\n");
}
/* Nothing to do */
@ -547,7 +547,7 @@ MmMdRemoveRegionFromMdlEx (
FoundPageCount = Descriptor->PageCount;
FoundEndPage = FoundBasePage + FoundPageCount;
EndPage = PageCount + BasePage;
//EarlyPrint(L"Looking for Region 0x%08I64X-0x%08I64X in 0x%08I64X-0x%08I64X\n", BasePage, EndPage, FoundBasePage, FoundEndPage);
//EarlyPrint(L"Looking for Region 0x%08I64X-0x%08I64X in 0x%08I64X-0x%08I64X\r\n", BasePage, EndPage, FoundBasePage, FoundEndPage);
/* Make a copy of the original descriptor */
RtlCopyMemory(&NewDescriptor, NextEntry, sizeof(NewDescriptor));
@ -562,18 +562,18 @@ MmMdRemoveRegionFromMdlEx (
if ((FoundBasePage >= BasePage) || (EndPage >= FoundEndPage))
{
/* This descriptor doesn't cover any part of the range */
//EarlyPrint(L"No part of this descriptor contains the region\n");
//EarlyPrint(L"No part of this descriptor contains the region\r\n");
}
else
{
/* This descriptor covers the head of the allocation */
//EarlyPrint(L"Descriptor covers the head of the region\n");
//EarlyPrint(L"Descriptor covers the head of the region\r\n");
}
}
else
{
/* This descriptor contains the entire allocation */
//EarlyPrint(L"Descriptor contains the entire region\n");
//EarlyPrint(L"Descriptor contains the entire region\r\n");
}
/* Keep going */
@ -614,14 +614,14 @@ MmMdRemoveRegionFromMdlEx (
if (!Descriptor->PageCount)
{
/* Remove it */
//EarlyPrint(L"Entire descriptor consumed\n");
//EarlyPrint(L"Entire descriptor consumed\r\n");
MmMdRemoveDescriptorFromList(MdList, Descriptor);
MmMdFreeDescriptor(Descriptor);
/* Check if we're supposed to insert it into a new list */
if (HaveNewList)
{
EarlyPrint(L"Not yet implemented\n");
EfiPrintf(L"Not yet implemented\r\n");
Status = STATUS_NOT_IMPLEMENTED;
goto Quickie;
}
@ -681,7 +681,7 @@ MmMdFindSatisfyingRegion (
/* Check for start overflow */
if (BaseMin > BaseMax)
{
EarlyPrint(L"Descriptor overflow\n");
EfiPrintf(L"Descriptor overflow\r\n");
return FALSE;
}
@ -724,7 +724,7 @@ MmMdFindSatisfyingRegion (
/* Any mapped page already? */
if (Descriptor->VirtualPage)
{
EarlyPrint(L"Virtual memory not yet supported\n");
EfiPrintf(L"Virtual memory not yet supported\r\n");
return FALSE;
}
else
@ -737,21 +737,21 @@ MmMdFindSatisfyingRegion (
if ((((Flags & 0xFF) & (Descriptor->Flags & 0xFF)) != (Flags & 0xFF)) ||
(((Flags & 0xFF00) & (Descriptor->Flags & 0xFF00)) != (Flags & 0xFF00)))
{
EarlyPrint(L"Incorrect memory attributes\n");
EfiPrintf(L"Incorrect memory attributes\r\n");
return FALSE;
}
/* Bail out if the allocation flags don't match */
if (((Flags ^ Descriptor->Flags) & 0x190000))
{
EarlyPrint(L"Incorrect memory allocation flags\n");
EfiPrintf(L"Incorrect memory allocation flags\r\n");
return FALSE;
}
/* Bail out if the type doesn't match */
if (Descriptor->Type != MemoryType)
{
//EarlyPrint(L"Incorrect descriptor type\n");
//EarlyPrint(L"Incorrect descriptor type\r\n");
return FALSE;
}
@ -761,7 +761,7 @@ MmMdFindSatisfyingRegion (
NewDescriptor->Type = Descriptor->Type;
NewDescriptor->VirtualPage = VirtualPage;
NewDescriptor->Flags = Descriptor->Flags;
//EarlyPrint(L"Found a matching descriptor: %08I64X with %08I64X pages\n", BasePage, Pages);
//EarlyPrint(L"Found a matching descriptor: %08I64X with %08I64X pages\r\n", BasePage, Pages);
return TRUE;
}
@ -775,14 +775,12 @@ MmMdFreeGlobalDescriptors (
PLIST_ENTRY OldFlink, OldBlink;
/* Make sure we're not int middle of a call using a descriptor */
EarlyPrint(L"Call depth is %d\n", MmDescriptorCallTreeCount);
if (MmDescriptorCallTreeCount != 1)
{
return;
}
/* Loop every current global descriptor */
EarlyPrint(L"MmGlobalMemoryDescriptorsUsed: %d\n", MmGlobalMemoryDescriptorsUsed);
while (Index < MmGlobalMemoryDescriptorsUsed)
{
/* Does it have any valid pageS? */

View file

@ -140,7 +140,7 @@ MmHapHeapAllocatorExtend (
HeapLimit = Heap->HeapLimit + PAGE_SIZE;
if (HeapLimit <= Heap->HeapEnd)
{
EarlyPrint(L"Heap extension TODO\n");
EfiPrintf(L"Heap extension TODO\r\n");
return STATUS_INSUFFICIENT_RESOURCES;
}
}
@ -224,16 +224,16 @@ MmHapReportHeapCorruption (
#if 0
BOOLEAN DebuggerEnabled;
BlStatusPrint(L"Heap corruption in the links surrounding %p!\n", BufferEntry);
BlStatusPrint(L"Heap corruption in the links surrounding %p!\r\n", BufferEntry);
DebuggerEnabled = BlBdDebuggerEnabled();
if (DebuggerEnabled)
{
BlStatusPrint(L"\n*** Fatal Error 0x%08x :\n (0x%p, 0x%p, 0x%p, 0x%p)\n\n", 2, BufferEntry, NULL, NULL, NULL);
BlStatusPrint(L"\n*** Fatal Error 0x%08x :\n (0x%p, 0x%p, 0x%p, 0x%p)\n\r\n", 2, BufferEntry, NULL, NULL, NULL);
__debugbreak();
}
#else
EarlyPrint(L"Heap corruption in the links surrounding %p!\n", BufferEntry);
EfiPrintf(L"Heap corruption in the links surrounding %p!\r\n", BufferEntry);
#endif
}
@ -642,18 +642,18 @@ BlMmAllocateHeap (
/* We have no heaps or space on any heap -- extend the heap and retry */
if (!NT_SUCCESS(MmHapHeapAllocatorExtend(BufferSize)))
{
EarlyPrint(L"Heap extension failed!\n");
EfiPrintf(L"Heap extension failed!\r\n");
return NULL;
}
EarlyPrint(L"Heap extended -- trying again\n");
EfiPrintf(L"Heap extended -- trying again\r\n");
}
/* Clear all the bits, marking this entry as allocated */
BusyEntry->BufferNext.P = MmHapDecodeLink(BusyEntry->BufferNext);
/* Return the entry's data buffer */
EarlyPrint(L"Returning buffer at 0x%p\n", &BusyEntry->Buffer);
EfiPrintf(L"Returning buffer at 0x%p\r\n", &BusyEntry->Buffer);
return &BusyEntry->Buffer;
}

View file

@ -71,10 +71,10 @@ Mmx86pMapMemoryRegions (
if (DoDeferred)
{
EarlyPrint(L"Deferred todo\n");
EfiPrintf(L"Deferred todo\r\n");
}
EarlyPrint(L"Phase 1 TODO\n");
EfiPrintf(L"Phase 1 TODO\r\n");
return STATUS_NOT_IMPLEMENTED;
}

View file

@ -29,7 +29,7 @@ MmTrInitialize (
}
/* TODO */
EarlyPrint(L"Required for protected mode\n");
EfiPrintf(L"Required for protected mode\r\n");
return STATUS_NOT_IMPLEMENTED;
}
@ -60,7 +60,7 @@ MmSelectMappingAddress (
}
/* Have to allocate physical pages */
EarlyPrint(L"VM Todo\n");
EfiPrintf(L"VM Todo\r\n");
return STATUS_NOT_IMPLEMENTED;
}
@ -99,7 +99,7 @@ MmMapPhysicalAddress (
return STATUS_UNSUCCESSFUL;
}
EarlyPrint(L"VM todo\n");
EfiPrintf(L"VM todo\r\n");
return STATUS_NOT_IMPLEMENTED;
}
@ -188,7 +188,7 @@ BlMmMapPhysicalAddressEx (
if (MmTranslationType != BlNone)
{
/* For virtual memory, there's more to do */
EarlyPrint(L"VM not supported for mapping\n");
EfiPrintf(L"VM not supported for mapping\r\n");
Status = STATUS_NOT_IMPLEMENTED;
goto Quickie;
}
@ -220,7 +220,7 @@ BlpMmInitialize (
if ((TranslationType > BlPae) || (LibraryParameters->TranslationType > BlPae))
{
/* Bail out */
EarlyPrint(L"Invalid translation types present\n");
EfiPrintf(L"Invalid translation types present\r\n");
Status = STATUS_INVALID_PARAMETER;
goto Quickie;
}
@ -278,7 +278,7 @@ BlpMmInitialize (
if (LibraryParameters->DescriptorCount > 512)
{
/* Switch to using a dynamic buffer instead */
EarlyPrint(L"Warning: too many descriptors\n");
EfiPrintf(L"Warning: too many descriptors\r\n");
Status = STATUS_NOT_IMPLEMENTED;
goto Quickie;
//MmMdpSwitchToDynamicDescriptors(LibraryParameters->DescriptorCount);

View file

@ -131,7 +131,7 @@ MmPapAllocateRegionFromMdl (
/* Check if we exhausted the list */
if (NextEntry == ListHead)
{
EarlyPrint(L"No matching memory found\n");
EfiPrintf(L"No matching memory found\r\n");
return Status;
}
@ -151,7 +151,7 @@ MmPapAllocateRegionFromMdl (
&EfiAddress);
if (!NT_SUCCESS(Status))
{
EarlyPrint(L"EFI memory allocation failure\n");
EfiPrintf(L"EFI memory allocation failure\r\n");
return Status;
}
@ -165,14 +165,14 @@ MmPapAllocateRegionFromMdl (
/* Are we allocating from the virtual memory list? */
if (CurrentList == &MmMdlMappedUnallocated)
{
EarlyPrint(L"Virtual memory not yet supported\n");
EfiPrintf(L"Virtual memory not yet supported\r\n");
return STATUS_NOT_IMPLEMENTED;
}
/* Does the memory we received not exactly fall onto the beginning of its descriptor? */
if (LocalDescriptor.BasePage != FoundDescriptor->BasePage)
{
EarlyPrint(L"Local Page: %08I64X Found Page: %08I64X\n", LocalDescriptor.BasePage, FoundDescriptor->BasePage);
EfiPrintf(L"Local Page: %08I64X Found Page: %08I64X\r\n", LocalDescriptor.BasePage, FoundDescriptor->BasePage);
TempDescriptor = MmMdInitByteGranularDescriptor(FoundDescriptor->Flags,
FoundDescriptor->Type,
FoundDescriptor->BasePage,
@ -193,7 +193,7 @@ MmPapAllocateRegionFromMdl (
LocalDescriptor.VirtualPage + LocalDescriptor.PageCount : 0;
if (LocalEndPage != FoundEndPage)
{
EarlyPrint(L"Local Page: %08I64X Found Page: %08I64X\n", LocalEndPage, FoundEndPage);
EfiPrintf(L"Local Page: %08I64X Found Page: %08I64X\r\n", LocalEndPage, FoundEndPage);
TempDescriptor = MmMdInitByteGranularDescriptor(FoundDescriptor->Flags,
FoundDescriptor->Type,
LocalEndPage,
@ -266,7 +266,7 @@ MmPaAllocatePages (
if (Status == STATUS_NOT_FOUND)
{
/* Need to re-synchronize the memory map and check other lists */
EarlyPrint(L"No RAM found -- backup plan not yet implemented\n");
EfiPrintf(L"No RAM found -- backup plan not yet implemented\r\n");
}
/* Did we get the region we wanted? */
@ -277,7 +277,7 @@ MmPaAllocatePages (
}
/* Nope, we have to hunt for it elsewhere */
EarlyPrint(L"TODO\n");
EfiPrintf(L"TODO\r\n");
return Status;
}
@ -488,14 +488,14 @@ MmPaInitialize (
PLIST_ENTRY listHead, nextEntry;
/* Loop the NT firmware memory list */
EarlyPrint(L"NT MEMORY MAP\n\n");
EfiPrintf(L"NT MEMORY MAP\n\r\n");
listHead = &MmMdlUnmappedUnallocated.ListHead;
nextEntry = listHead->Flink;
while (listHead != nextEntry)
{
Descriptor = CONTAINING_RECORD(nextEntry, BL_MEMORY_DESCRIPTOR, ListEntry);
EarlyPrint(L"Type: %08lX Flags: %08lX Base: 0x%016I64X End: 0x%016I64X\n",
EfiPrintf(L"Type: %08lX Flags: %08lX Base: 0x%016I64X End: 0x%016I64X\r\n",
Descriptor->Type,
Descriptor->Flags,
Descriptor->BasePage << PAGE_SHIFT,

View file

@ -50,7 +50,6 @@ BlpTimeMeasureTscFrequency (
/* Set the frequency based on the two measurements we took */
BlpTimePerformanceFrequency = 125 * (Delta - (TimeStamp2 - TimeStamp1)) & 0x1FFFFFFFFFFFFFF;
EarlyPrint(L"Computed frequency as: %I64d\n", BlpTimePerformanceFrequency);
return STATUS_SUCCESS;
}
@ -79,7 +78,7 @@ BlpTimeCalibratePerformanceCounter (
{
/* Read the TSC frequency from the MSR */
BlpTimePerformanceFrequency = __readmsr(0x40000022);
EarlyPrint(L"Using frequency as: %I64d\n", BlpTimePerformanceFrequency);
EfiPrintf(L"Using Hyper-V frequency as: %I64d\r\n", BlpTimePerformanceFrequency);
return STATUS_SUCCESS;
}
}