Hello!
Could someone correct my understanding of reserved memory regions?
I want to reserve some region (below 4G) but this region must be
accessible for OS.
To be clear this is ACPI NVS region which must be accessible for Linux
Kernel, i.e request_mem_region() must succeed. 
So what I am doing:
On PEI phase I create two HOBs:
 BuildResourceDescriptorHob (
   EFI_RESOURCE_SYSTEM_MEMORY,
   EFI_RESOURCE_ATTRIBUTE_PRESENT |
   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 |
   EFI_RESOURCE_ATTRIBUTE_TESTED,
   BASE_1MB, 
   LowerMemorySize - ReservedMemorySize)
   );

 BuildResourceDescriptorHob (
   EFI_RESOURCE_MEMORY_RESERVED,
   EFI_RESOURCE_ATTRIBUTE_PRESENT     |
   EFI_RESOURCE_ATTRIBUTE_INITIALIZED |
   EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |
   EFI_RESOURCE_ATTRIBUTE_TESTED,
   ReservedMemoryBase,
   ReservedMemorySize
 );

So, DXE phase will not use reserved memory.
To insert this reserved memory region to EFI memory map I call
  gBS->AllocatePages (
         AllocateAddress,
         EfiACPIMemoryNVS,
         EFI_SIZE_TO_PAGES (ReservedMemorySize),
         ReservedMemoryBase
         );
So, everyone is happy, OS kernels (Linux, Windows) successfully maps
this memory.
But CSM LegacyBiosDxe asserts.
LegacyBiosBuildE820 function detects overlapped memory region, because
it processes
EFI memory map and HOB list during E820 map building.
AllocatePages() adds this region to memory map, while HOB list still
contains it also.
So here is a question: Am I reserve memory region correctly or there is
a some inaccuracy at LegacyBiosDxe?


------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works. 
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to