summaryrefslogtreecommitdiff
path: root/DuetPkg/DxeIpl/HobGeneration.c
diff options
context:
space:
mode:
authorgikidy <gikidy@6f19259b-4bc3-4df7-8a09-765794883524>2009-06-30 05:47:12 +0000
committergikidy <gikidy@6f19259b-4bc3-4df7-8a09-765794883524>2009-06-30 05:47:12 +0000
commitd569cbb0d1ebf786f4daa7ed6c4533b927335174 (patch)
tree62bb98a6680c1b82894f9b0083a2a5ffc7d9bf1a /DuetPkg/DxeIpl/HobGeneration.c
parent5540f4aa180a122bc4cce664390b9b8f5222521b (diff)
downloadedk2-d569cbb0d1ebf786f4daa7ed6c4533b927335174.zip
edk2-d569cbb0d1ebf786f4daa7ed6c4533b927335174.tar.gz
edk2-d569cbb0d1ebf786f4daa7ed6c4533b927335174.tar.bz2
Fix system memory map issue.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8685 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'DuetPkg/DxeIpl/HobGeneration.c')
-rw-r--r--DuetPkg/DxeIpl/HobGeneration.c46
1 files changed, 44 insertions, 2 deletions
diff --git a/DuetPkg/DxeIpl/HobGeneration.c b/DuetPkg/DxeIpl/HobGeneration.c
index ebe6788..224d6a7 100644
--- a/DuetPkg/DxeIpl/HobGeneration.c
+++ b/DuetPkg/DxeIpl/HobGeneration.c
@@ -190,6 +190,26 @@ HOB_TEMPLATE gHobTemplate = {
EFI_DXE_FILE_GUID,
0x0 // EFI_PHYSICAL_ADDRESS of EntryPoint;
},
+ { // MemoryDxeCore
+ {
+ EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, // HobType
+ sizeof (EFI_HOB_RESOURCE_DESCRIPTOR), // HobLength
+ 0 // Reserved
+ },
+ {
+ 0 // Owner Guid
+ },
+ EFI_RESOURCE_SYSTEM_MEMORY, // ResourceType
+ (EFI_RESOURCE_ATTRIBUTE_PRESENT |
+// EFI_RESOURCE_ATTRIBUTE_TESTED | // Do not mark as TESTED, or DxeCore will find it and use it before check Allocation
+ EFI_RESOURCE_ATTRIBUTE_INITIALIZED |
+ EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |
+ EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |
+ EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |
+ EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE),
+ 0x0, // PhysicalStart
+ 0 // ResourceLength
+ },
{ // Memory Map Hints to reduce fragmentation in the memory map
{
{
@@ -453,6 +473,23 @@ HOB_TEMPLATE gHobTemplate = {
0
}
},
+ { // NV Ftw FV Resource
+ {
+ EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, // HobType
+ sizeof (EFI_HOB_RESOURCE_DESCRIPTOR), // HobLength
+ 0 // Reserved
+ },
+ {
+ 0 // Owner Guid
+ },
+ EFI_RESOURCE_FIRMWARE_DEVICE, // ResourceType
+ (EFI_RESOURCE_ATTRIBUTE_PRESENT |
+ EFI_RESOURCE_ATTRIBUTE_INITIALIZED |
+ EFI_RESOURCE_ATTRIBUTE_TESTED |
+ EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE), // ResourceAttribute
+ 0, // PhysicalStart (Fixed later)
+ NV_FTW_FVB_SIZE // ResourceLength
+ },
{ // FVB holding FTW spaces including Working & Spare space
{
{
@@ -703,9 +740,13 @@ PrepareHobDxeCore (
UINT64 DxeCoreLength
)
{
- gHob->DxeCore.MemoryAllocationHeader.MemoryBaseAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)DxeCoreImageBase;
+ gHob->DxeCore.MemoryAllocationHeader.MemoryBaseAddress = DxeCoreImageBase;
gHob->DxeCore.MemoryAllocationHeader.MemoryLength = DxeCoreLength;
gHob->DxeCore.EntryPoint = (EFI_PHYSICAL_ADDRESS)(UINTN)DxeCoreEntryPoint;
+
+
+ gHob->MemoryDxeCore.PhysicalStart = DxeCoreImageBase;
+ gHob->MemoryDxeCore.ResourceLength = DxeCoreLength;
}
VOID *
@@ -878,7 +919,8 @@ PrepareHobNvStorage (
// Create the FVB holding FTW spaces
//
FtwFvbBase = (EFI_PHYSICAL_ADDRESS)((UINTN) StorageFvbBase + NV_STORAGE_FVB_SIZE);
- gHob->NvFtwFvb.FvbInfo.Entries[0].Base = FtwFvbBase;
+ gHob->NvFtwFvResource.PhysicalStart =
+ gHob->NvFtwFvb.FvbInfo.Entries[0].Base = FtwFvbBase;
//
// Put FTW Working in front
//