2017-12-04 23:58:15 +00:00
|
|
|
diff --git a/MdeModulePkg/Core/Dxe/Dispatcher/Dependency.c b/MdeModulePkg/Core/Dxe/Dispatcher/Dependency.c
|
|
|
|
index 1d8a57b..29bd38a 100644
|
|
|
|
--- a/MdeModulePkg/Core/Dxe/Dispatcher/Dependency.c
|
|
|
|
+++ b/MdeModulePkg/Core/Dxe/Dispatcher/Dependency.c
|
|
|
|
@@ -208,6 +208,8 @@ CorePreProcessDepex (
|
|
|
|
was found.
|
2017-09-22 23:13:23 +00:00
|
|
|
|
2017-12-04 23:58:15 +00:00
|
|
|
**/
|
|
|
|
+BOOLEAN mDebugDepex;
|
2017-09-22 23:13:23 +00:00
|
|
|
+
|
2017-12-04 23:58:15 +00:00
|
|
|
BOOLEAN
|
|
|
|
CoreIsSchedulable (
|
|
|
|
IN EFI_CORE_DRIVER_ENTRY *DriverEntry
|
|
|
|
@@ -231,19 +233,18 @@ CoreIsSchedulable (
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, "Evaluate DXE DEPEX for FFS(%g)\n", &DriverEntry->FileName));
|
|
|
|
+ //DEBUG ((DEBUG_DISPATCH, "Evaluate DXE DEPEX for FFS(%g)\n", &DriverEntry->FileName));
|
|
|
|
|
|
|
|
if (DriverEntry->Depex == NULL) {
|
|
|
|
//
|
|
|
|
// A NULL Depex means treat the driver like an UEFI 2.0 thing.
|
|
|
|
//
|
|
|
|
Status = CoreAllEfiServicesAvailable ();
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " All UEFI Services Available = "));
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, "FALSE\n RESULT = FALSE\n"));
|
|
|
|
+ if (mDebugDepex) DEBUG ((DEBUG_DISPATCH, " All UEFI Services Available = FALSE\n"));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, "TRUE\n RESULT = TRUE\n"));
|
|
|
|
+ if (mDebugDepex) DEBUG ((DEBUG_DISPATCH, " All UEFI Services Available = TRUE\n"));
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
@@ -306,10 +307,10 @@ CoreIsSchedulable (
|
|
|
|
Status = CoreLocateProtocol (&DriverGuid, NULL, &Interface);
|
|
|
|
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = FALSE\n", &DriverGuid));
|
|
|
|
+ if (mDebugDepex) DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = FALSE\n", &DriverGuid));
|
|
|
|
Status = PushBool (FALSE);
|
|
|
|
} else {
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));
|
|
|
|
+ if (mDebugDepex) DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));
|
|
|
|
*Iterator = EFI_DEP_REPLACE_TRUE;
|
|
|
|
Status = PushBool (TRUE);
|
|
|
|
}
|
|
|
|
@@ -322,7 +323,7 @@ CoreIsSchedulable (
|
|
|
|
break;
|
|
|
|
|
|
|
|
case EFI_DEP_AND:
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " AND\n"));
|
|
|
|
+ //DEBUG ((DEBUG_DISPATCH, " AND\n"));
|
|
|
|
Status = PopBool (&Operator);
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));
|
|
|
|
@@ -343,7 +344,7 @@ CoreIsSchedulable (
|
|
|
|
break;
|
|
|
|
|
|
|
|
case EFI_DEP_OR:
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " OR\n"));
|
|
|
|
+ //DEBUG ((DEBUG_DISPATCH, " OR\n"));
|
|
|
|
Status = PopBool (&Operator);
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));
|
|
|
|
@@ -364,7 +365,7 @@ CoreIsSchedulable (
|
|
|
|
break;
|
|
|
|
|
|
|
|
case EFI_DEP_NOT:
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " NOT\n"));
|
|
|
|
+ //DEBUG ((DEBUG_DISPATCH, " NOT\n"));
|
|
|
|
Status = PopBool (&Operator);
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));
|
|
|
|
@@ -379,7 +380,7 @@ CoreIsSchedulable (
|
|
|
|
break;
|
|
|
|
|
|
|
|
case EFI_DEP_TRUE:
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " TRUE\n"));
|
|
|
|
+ //DEBUG ((DEBUG_DISPATCH, " TRUE\n"));
|
|
|
|
Status = PushBool (TRUE);
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));
|
|
|
|
@@ -388,7 +389,7 @@ CoreIsSchedulable (
|
|
|
|
break;
|
|
|
|
|
|
|
|
case EFI_DEP_FALSE:
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " FALSE\n"));
|
|
|
|
+ //DEBUG ((DEBUG_DISPATCH, " FALSE\n"));
|
|
|
|
Status = PushBool (FALSE);
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));
|
|
|
|
@@ -397,18 +398,18 @@ CoreIsSchedulable (
|
|
|
|
break;
|
|
|
|
|
|
|
|
case EFI_DEP_END:
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " END\n"));
|
|
|
|
+ //DEBUG ((DEBUG_DISPATCH, " END\n"));
|
|
|
|
Status = PopBool (&Operator);
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " RESULT = %a\n", Operator ? "TRUE" : "FALSE"));
|
|
|
|
+ if (mDebugDepex) DEBUG ((DEBUG_DISPATCH, " RESULT = %a\n", Operator ? "TRUE" : "FALSE"));
|
|
|
|
return Operator;
|
|
|
|
|
|
|
|
case EFI_DEP_REPLACE_TRUE:
|
|
|
|
CopyMem (&DriverGuid, Iterator + 1, sizeof (EFI_GUID));
|
|
|
|
- DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));
|
|
|
|
+ //DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));
|
|
|
|
|
|
|
|
Status = PushBool (TRUE);
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
diff --git a/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c b/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c
|
|
|
|
index 5eee71b..0bf24c6 100644
|
|
|
|
--- a/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c
|
|
|
|
+++ b/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c
|
|
|
|
@@ -392,6 +392,9 @@ CoreTrust (
|
|
|
|
return EFI_NOT_FOUND;
|
|
|
|
}
|
|
|
|
|
2017-09-22 23:13:23 +00:00
|
|
|
+
|
2017-12-04 23:58:15 +00:00
|
|
|
+EFI_GUID * gLastGuid;
|
2017-09-22 23:13:23 +00:00
|
|
|
+
|
2017-12-04 23:58:15 +00:00
|
|
|
/**
|
|
|
|
This is the main Dispatcher for DXE and it exits when there are no more
|
|
|
|
drivers to run. Drain the mScheduledQueue and load and start a PE
|
|
|
|
@@ -460,7 +469,8 @@ CoreDispatcher (
|
|
|
|
// skip the LoadImage
|
|
|
|
//
|
|
|
|
if (DriverEntry->ImageHandle == NULL && !DriverEntry->IsFvImage) {
|
|
|
|
- DEBUG ((DEBUG_INFO, "Loading driver %g\n", &DriverEntry->FileName));
|
|
|
|
+ //DEBUG ((DEBUG_INFO, "Loading driver %g\n", &DriverEntry->FileName));
|
|
|
|
+ gLastGuid = &DriverEntry->FileName;
|
|
|
|
Status = CoreLoadImage (
|
|
|
|
FALSE,
|
|
|
|
gDxeCoreImageHandle,
|
|
|
|
@@ -884,6 +909,7 @@ CoreAddToDriverList (
|
|
|
|
DriverEntry->IsFvImage = TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
+//DEBUG((DEBUG_INFO, "CoreAddToDriverList %g\n", DriverName));
|
|
|
|
DriverEntry->Signature = EFI_CORE_DRIVER_ENTRY_SIGNATURE;
|
|
|
|
CopyGuid (&DriverEntry->FileName, DriverName);
|
|
|
|
DriverEntry->FvHandle = FvHandle;
|
|
|
|
@@ -1375,10 +1416,15 @@ CoreDisplayDiscoveredNotDispatched (
|
|
|
|
LIST_ENTRY *Link;
|
|
|
|
EFI_CORE_DRIVER_ENTRY *DriverEntry;
|
|
|
|
|
|
|
|
+extern BOOLEAN mDebugDepex;
|
|
|
|
+//mDebugDepex = 1;
|
|
|
|
for (Link = mDiscoveredList.ForwardLink;Link !=&mDiscoveredList; Link = Link->ForwardLink) {
|
|
|
|
DriverEntry = CR(Link, EFI_CORE_DRIVER_ENTRY, Link, EFI_CORE_DRIVER_ENTRY_SIGNATURE);
|
|
|
|
if (DriverEntry->Dependent) {
|
|
|
|
DEBUG ((DEBUG_LOAD, "Driver %g was discovered but not loaded!!\n", &DriverEntry->FileName));
|
|
|
|
+ CoreIsSchedulable(DriverEntry);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
+mDebugDepex = 0;
|
2017-09-22 23:13:23 +00:00
|
|
|
+
|
2017-12-04 23:58:15 +00:00
|
|
|
}
|
|
|
|
diff --git a/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c b/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c
|
|
|
|
index 91e94a7..3ab72c0 100644
|
|
|
|
--- a/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c
|
|
|
|
+++ b/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c
|
|
|
|
@@ -266,6 +300,8 @@ DxeMain (
|
|
|
|
//
|
|
|
|
InitializeDebugAgent (DEBUG_AGENT_INIT_DXE_CORE, HobStart, NULL);
|
|
|
|
|
|
|
|
+ DEBUG ((DEBUG_INFO, "DxeMain %a %d\n", __FILE__, __LINE__));
|
2017-09-22 23:13:23 +00:00
|
|
|
+
|
2017-12-04 23:58:15 +00:00
|
|
|
//
|
|
|
|
// Initialize Memory Services
|
|
|
|
//
|
|
|
|
@@ -283,7 +319,12 @@ DxeMain (
|
2017-09-22 23:13:23 +00:00
|
|
|
gDxeCoreRT = AllocateRuntimeCopyPool (sizeof (EFI_RUNTIME_SERVICES), &mEfiRuntimeServicesTableTemplate);
|
|
|
|
ASSERT (gDxeCoreRT != NULL);
|
|
|
|
|
|
|
|
+
|
|
|
|
+ // Set our vendor string and make sure there is at least a few pages
|
|
|
|
+ // available in low memory for the SMP trampoline.
|
|
|
|
gDxeCoreST->RuntimeServices = gDxeCoreRT;
|
|
|
|
+ gDxeCoreST->FirmwareVendor = L"Heads/NERF";
|
|
|
|
+ gDxeCoreST->FirmwareRevision = 1337;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Start the Image Services.
|
2017-12-04 23:58:15 +00:00
|
|
|
@@ -373,10 +414,11 @@ DxeMain (
|
|
|
|
|
|
|
|
for (Hob.Raw = HobStart; !END_OF_HOB_LIST(Hob); Hob.Raw = GET_NEXT_HOB(Hob)) {
|
|
|
|
if (GET_HOB_TYPE (Hob) == EFI_HOB_TYPE_MEMORY_ALLOCATION) {
|
|
|
|
- DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Memory Allocation 0x%08x 0x%0lx - 0x%0lx\n", \
|
|
|
|
+ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Memory Allocation 0x%02x 0x%0lx - 0x%0lx 0x%08x\n", \
|
|
|
|
Hob.MemoryAllocation->AllocDescriptor.MemoryType, \
|
|
|
|
Hob.MemoryAllocation->AllocDescriptor.MemoryBaseAddress, \
|
|
|
|
- Hob.MemoryAllocation->AllocDescriptor.MemoryBaseAddress + Hob.MemoryAllocation->AllocDescriptor.MemoryLength - 1));
|
|
|
|
+ Hob.MemoryAllocation->AllocDescriptor.MemoryBaseAddress + Hob.MemoryAllocation->AllocDescriptor.MemoryLength - 1,
|
|
|
|
+ Hob.MemoryAllocation->AllocDescriptor.MemoryLength));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (Hob.Raw = HobStart; !END_OF_HOB_LIST(Hob); Hob.Raw = GET_NEXT_HOB(Hob)) {
|
|
|
|
@@ -454,15 +507,53 @@ DxeMain (
|
|
|
|
Status = FwVolBlockDriverInit (gDxeCoreImageHandle, gDxeCoreST);
|
|
|
|
ASSERT_EFI_ERROR (Status);
|
|
|
|
|
|
|
|
+ // NERF hack for s2600wf to include the second firmware volume,
|
|
|
|
+ // which has the Linux kernel and initrd. Depending on
|
|
|
|
+ // how we're booting we have either 4 or 7 MB avialable
|
|
|
|
+#if 0
|
|
|
|
+ DEBUG((DEBUG_INFO, "Adding LinuxBoot FV at 0xFF200000\n"));
|
|
|
|
+ ProduceFVBProtocolOnBuffer (0xFF200000, 0x700000, NULL, 0, NULL);
|
|
|
|
+#else
|
|
|
|
+ DEBUG((DEBUG_INFO, "Adding LinuxBoot FV at 0xFF500000\n"));
|
|
|
|
+ ProduceFVBProtocolOnBuffer (0xFF500000, 0x400000, NULL, 0, NULL);
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
Status = FwVolDriverInit (gDxeCoreImageHandle, gDxeCoreST);
|
|
|
|
ASSERT_EFI_ERROR (Status);
|
|
|
|
|
|
|
|
+
|
|
|
|
//
|
|
|
|
// Produce the Section Extraction Protocol
|
|
|
|
//
|
|
|
|
Status = InitializeSectionExtraction (gDxeCoreImageHandle, gDxeCoreST);
|
2017-09-22 23:13:23 +00:00
|
|
|
ASSERT_EFI_ERROR (Status);
|
|
|
|
|
2017-12-04 23:58:15 +00:00
|
|
|
+#if 0
|
|
|
|
+ // free up the low memory for Linux's SMP trampoline in the e820 map
|
2017-09-22 23:13:23 +00:00
|
|
|
+ // otherwise bad things happen...
|
2017-10-19 20:04:14 +00:00
|
|
|
+ // TODO: find out how to do this the right way, can't kexec until it works
|
2017-12-04 23:58:15 +00:00
|
|
|
+ EFI_PHYSICAL_ADDRESS trampoline = 0x100000;
|
|
|
|
+ Status = gBS->AllocatePages(
|
|
|
|
+ AllocateAnyPages, // ideally AllocateMaxAddress
|
|
|
|
+ EfiBootServicesData,
|
|
|
|
+ 0x10,
|
|
|
|
+ &trampoline);
|
|
|
|
+ if (Status != EFI_SUCCESS)
|
|
|
|
+ {
|
|
|
|
+ DEBUG((EFI_D_ERROR, "e820 trampoline unable to allocate memory rc=%d\n", Status));
|
|
|
|
+ CoreRemoveMemorySpace (0x10000, 0x10000);
|
|
|
|
+ CoreAddMemorySpace(
|
|
|
|
+ EfiGcdMemoryTypeSystemMemory,
|
|
|
|
+ 0x10000,
|
|
|
|
+ 0x10000,
|
|
|
|
+ 0
|
|
|
|
+ );
|
|
|
|
+ } else {
|
|
|
|
+ //DEBUG((EFI_D_INFO, "e820 trampoline at %p\n", (const void*) trampoline));
|
|
|
|
+ }
|
|
|
|
+#endif
|
2017-09-22 23:13:23 +00:00
|
|
|
+
|
2017-12-04 23:58:15 +00:00
|
|
|
+
|
|
|
|
//
|
|
|
|
// Initialize the DXE Dispatcher
|
2017-09-22 23:13:23 +00:00
|
|
|
//
|
2017-12-04 23:58:15 +00:00
|
|
|
@@ -518,6 +609,8 @@ DxeMain (
|
|
|
|
//
|
|
|
|
// Transfer control to the BDS Architectural Protocol
|
|
|
|
//
|
|
|
|
+DEBUG((DEBUG_INFO, "\n--------\nTransfering control to BDS %p\n", gBds));
|
|
|
|
+DEBUG((DEBUG_INFO, "Entry Point %p (%p)\n--------\n", gBds->Entry, *(void**) gBds));
|
|
|
|
gBds->Entry (gBds);
|
|
|
|
|
2017-09-22 23:13:23 +00:00
|
|
|
//
|
2017-12-04 23:58:15 +00:00
|
|
|
@@ -740,9 +833,12 @@ CoreExitBootServices (
|
|
|
|
{
|
|
|
|
EFI_STATUS Status;
|
|
|
|
|
|
|
|
+DEBUG((DEBUG_INFO, "ExitBootServices time\n"));
|
|
|
|
+
|
2017-09-20 22:24:54 +00:00
|
|
|
//
|
|
|
|
// Disable Timer
|
|
|
|
//
|
|
|
|
+ if(gTimer)
|
|
|
|
gTimer->SetTimerPeriod (gTimer, 0);
|
|
|
|
|
|
|
|
//
|
2017-12-04 23:58:15 +00:00
|
|
|
@@ -780,6 +876,7 @@ CoreExitBootServices (
|
2017-09-20 22:24:54 +00:00
|
|
|
//
|
|
|
|
// Disable CPU Interrupts
|
|
|
|
//
|
|
|
|
+ if(gCpu)
|
|
|
|
gCpu->DisableInterrupt (gCpu);
|
|
|
|
|
|
|
|
MemoryProtectionExitBootServicesCallback();
|
2017-12-04 23:58:15 +00:00
|
|
|
diff --git a/MdeModulePkg/Core/Dxe/FwVol/FwVol.c b/MdeModulePkg/Core/Dxe/FwVol/FwVol.c
|
|
|
|
index fe12d6e..0027e87 100644
|
|
|
|
--- a/MdeModulePkg/Core/Dxe/FwVol/FwVol.c
|
|
|
|
+++ b/MdeModulePkg/Core/Dxe/FwVol/FwVol.c
|
|
|
|
@@ -198,9 +198,19 @@ GetFwVolHeader (
|
|
|
|
FvhLength = sizeof (EFI_FIRMWARE_VOLUME_HEADER);
|
|
|
|
Status = ReadFvbData (Fvb, &StartLba, &Offset, FvhLength, (UINT8 *)&TempFvh);
|
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
|
+DEBUG((DEBUG_INFO, "GetFwVolHeader: ReadFvbData failed %d\n", Status));
|
|
|
|
return Status;
|
|
|
|
}
|
|
|
|
|
|
|
|
+ EFI_GUID NameGuid;
|
|
|
|
+ UINTN NameOffset = 0x60;
|
|
|
|
+ UINTN NameStartLba = 0;
|
|
|
|
+ ReadFvbData (Fvb, &NameStartLba, &NameOffset, sizeof(NameGuid), (UINT8 *)&NameGuid);
|
|
|
|
+
|
|
|
|
+ EFI_PHYSICAL_ADDRESS phys_address;
|
|
|
|
+ Fvb->GetPhysicalAddress(Fvb, &phys_address);
|
|
|
|
+DEBUG((DEBUG_INFO, "GetFwVolHeader %g %g %p\n", &TempFvh.FileSystemGuid, &NameGuid, phys_address));
|
|
|
|
+
|
|
|
|
//
|
|
|
|
// Validate FV Header signature, if not as expected, continue.
|
|
|
|
//
|
|
|
|
diff --git a/MdeModulePkg/Core/Dxe/Image/Image.c b/MdeModulePkg/Core/Dxe/Image/Image.c
|
|
|
|
index 03e979a..e4a82a4 100644
|
|
|
|
--- a/MdeModulePkg/Core/Dxe/Image/Image.c
|
|
|
|
+++ b/MdeModulePkg/Core/Dxe/Image/Image.c
|
|
|
|
@@ -733,8 +733,11 @@ CoreLoadPeImage (
|
|
|
|
CHAR8 EfiFileName[256];
|
|
|
|
|
|
|
|
|
|
|
|
+extern EFI_GUID * gLastGuid;
|
|
|
|
+
|
|
|
|
DEBUG ((DEBUG_INFO | DEBUG_LOAD,
|
|
|
|
- "Loading driver at 0x%11p EntryPoint=0x%11p ",
|
|
|
|
+ "Loading driver %g at 0x%11p EntryPoint=0x%11p ",
|
|
|
|
+ gLastGuid,
|
|
|
|
(VOID *)(UINTN) Image->ImageContext.ImageAddress,
|
|
|
|
FUNCTION_ENTRY_POINT (Image->ImageContext.EntryPoint)));
|
|
|
|
|
2017-09-20 22:24:54 +00:00
|
|
|
diff --git a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
|
2017-12-04 23:58:15 +00:00
|
|
|
index a73c4cc..a488e75 100644
|
2017-09-20 22:24:54 +00:00
|
|
|
--- a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
|
|
|
|
+++ b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
|
|
|
|
@@ -232,7 +232,7 @@ SetUefiImageMemoryAttributes (
|
|
|
|
|
|
|
|
DEBUG ((DEBUG_INFO, "SetUefiImageMemoryAttributes - 0x%016lx - 0x%016lx (0x%016lx)\n", BaseAddress, Length, FinalAttributes));
|
|
|
|
|
|
|
|
- ASSERT(gCpu != NULL);
|
|
|
|
+ if(gCpu)
|
|
|
|
gCpu->SetMemoryAttributes (gCpu, BaseAddress, Length, FinalAttributes);
|
|
|
|
}
|
|
|
|
|
2017-12-04 23:58:15 +00:00
|
|
|
@@ -410,8 +410,8 @@ ProtectUefiImage (
|
|
|
|
BOOLEAN IsAligned;
|
|
|
|
UINT32 ProtectionPolicy;
|
|
|
|
|
|
|
|
- DEBUG ((DEBUG_INFO, "ProtectUefiImageCommon - 0x%x\n", LoadedImage));
|
|
|
|
- DEBUG ((DEBUG_INFO, " - 0x%016lx - 0x%016lx\n", (EFI_PHYSICAL_ADDRESS)(UINTN)LoadedImage->ImageBase, LoadedImage->ImageSize));
|
|
|
|
+ //DEBUG ((DEBUG_INFO, "ProtectUefiImageCommon - 0x%x\n", LoadedImage));
|
|
|
|
+ //DEBUG ((DEBUG_INFO, " - 0x%016lx - 0x%016lx\n", (EFI_PHYSICAL_ADDRESS)(UINTN)LoadedImage->ImageBase, LoadedImage->ImageSize));
|
|
|
|
|
|
|
|
if (gCpu == NULL) {
|
|
|
|
return ;
|
2017-10-19 20:04:14 +00:00
|
|
|
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
|
|
|
|
index ad85776..5b68318 100644
|
|
|
|
--- a/MdeModulePkg/MdeModulePkg.dsc
|
|
|
|
+++ b/MdeModulePkg/MdeModulePkg.dsc
|
|
|
|
@@ -76,7 +76,7 @@
|
|
|
|
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
|
|
|
|
SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
|
|
|
|
TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
|
|
|
|
- SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf
|
|
|
|
+ SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
|
|
|
|
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
|
|
|
|
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
|
|
|
PalLib|MdePkg/Library/BasePalLibNull/BasePalLibNull.inf
|
|
|
|
@@ -85,7 +85,7 @@
|
|
|
|
#
|
|
|
|
# Misc
|
|
|
|
#
|
|
|
|
- DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
|
|
|
|
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
|
|
|
DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
|
|
|
|
ReportStatusCodeLib|MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf
|
|
|
|
PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf
|
|
|
|
@@ -135,7 +135,7 @@
|
|
|
|
[LibraryClasses.common.DXE_RUNTIME_DRIVER]
|
|
|
|
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
|
|
|
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
|
|
|
- DebugLib|MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf
|
|
|
|
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
|
|
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
|
|
|
|
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
|
|
|
|
|
|
|
|
@@ -148,7 +148,7 @@
|
|
|
|
|
|
|
|
[LibraryClasses.common.DXE_SMM_DRIVER]
|
|
|
|
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
|
|
|
- DebugLib|MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf
|
|
|
|
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
|
|
|
MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
|
|
|
|
SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
|
|
|
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
|
|
|
|
@@ -157,13 +157,13 @@
|
|
|
|
[LibraryClasses.common.UEFI_DRIVER]
|
|
|
|
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
|
|
|
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
|
|
|
- DebugLib|MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf
|
|
|
|
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
|
|
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
|
|
|
|
|
|
|
|
[LibraryClasses.common.UEFI_APPLICATION]
|
|
|
|
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
|
|
|
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
|
|
|
- DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf
|
|
|
|
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
|
|
|
|
|
|
|
[LibraryClasses.ARM, LibraryClasses.AARCH64]
|
|
|
|
ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
|
|
|
|
@@ -193,7 +193,8 @@
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdDevicePathSupportDevicePathToText|FALSE
|
|
|
|
|
|
|
|
[PcdsFixedAtBuild]
|
|
|
|
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0f
|
|
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xff
|
|
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x800800cf
|
|
|
|
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x06
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizeNonPopulateCapsule|0x0
|
|
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizePopulateCapsule|0x0
|
|
|
|
diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc
|
|
|
|
index 8648dfa..9905200 100644
|
|
|
|
--- a/MdePkg/MdePkg.dsc
|
|
|
|
+++ b/MdePkg/MdePkg.dsc
|
|
|
|
@@ -29,7 +29,7 @@
|
|
|
|
|
|
|
|
[PcdsFixedAtBuild]
|
|
|
|
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0f
|
|
|
|
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000000
|
|
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x800800cf
|
|
|
|
gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0xE0000000
|
|
|
|
|
|
|
|
[PcdsFixedAtBuild.IPF]
|
2017-12-04 23:58:15 +00:00
|
|
|
--- /dev/null 2017-11-25 22:22:20.266607670 -0500
|
2018-01-16 17:56:03 +00:00
|
|
|
+++ b/Makefile 2017-10-20 17:30:30.300473143 -0400
|
2017-12-04 23:58:15 +00:00
|
|
|
@@ -0,0 +1,38 @@
|
2017-09-20 22:24:54 +00:00
|
|
|
+# Wrapper around the edk2 "build" script to generate
|
|
|
|
+# the few files that we actually want and avoid rebuilding
|
|
|
|
+# if we don't have to.
|
|
|
|
+
|
|
|
|
+PWD := $(shell pwd)
|
|
|
|
+EDK2_OUTPUT_DIR := $(PWD)/Build/MdeModule/DEBUG_GCC5/X64/MdeModulePkg/Core
|
|
|
|
+EDK2_BIN_DIR := $(PWD)/BaseTools/BinWrappers/PosixLike
|
|
|
|
+
|
|
|
|
+export PATH := $(EDK2_BIN_DIR):$(PATH)
|
|
|
|
+export CONFIG_PATH := $(PWD)/Conf
|
|
|
|
+export EDK_TOOLS_PATH := $(PWD)/BaseTools
|
|
|
|
+export WORKSPACE := $(PWD)
|
|
|
|
+
|
|
|
|
+EDK2_BINS += Dxe/DxeMain/DEBUG/DxeCore.efi
|
|
|
|
+EDK2_BINS += RuntimeDxe/RuntimeDxe/DEBUG/RuntimeDxe.efi
|
|
|
|
+
|
|
|
|
+EDK2_OUTPUTS = $(addprefix $(EDK2_OUTPUT_DIR)/,$(EDK2_BINS))
|
|
|
|
+
|
|
|
|
+# build takes too long, so we check to see if our executables exist
|
|
|
|
+# before we start a build. run the clean target if they must be rebuilt
|
|
|
|
+all: $(EDK2_OUTPUTS)
|
|
|
|
+ ls -Fla $(EDK2_OUTPUTS)
|
|
|
|
+ cp -a $(EDK2_OUTPUTS) .
|
|
|
|
+
|
|
|
|
+$(EDK2_OUTPUTS):
|
|
|
|
+ build
|
|
|
|
+
|
2017-12-04 23:58:15 +00:00
|
|
|
+ia32:
|
|
|
|
+ build -a IA32
|
|
|
|
+
|
2017-09-20 22:24:54 +00:00
|
|
|
+build:
|
|
|
|
+ build
|
|
|
|
+
|
|
|
|
+clean:
|
|
|
|
+ $(RM) $(EDK2_OUTPUTS)
|
|
|
|
+
|
|
|
|
+real-clean: clean
|
|
|
|
+ build clean
|