Hi Liming >So, for this case, I suggest to > create memory hob instead of resource hob with non present memory attribute.
ARM package is already creating a memory HoB for the same. Thanks Udit > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Gao, > Liming > Sent: Wednesday, September 20, 2017 8:29 PM > To: Meenakshi Aggarwal <meenakshi.aggar...@nxp.com>; edk2- > de...@lists.01.org; leif.lindh...@linaro.org; ard.biesheu...@linaro.org > Subject: Re: [edk2] [PATCH v2] PeiLib : Inform UEFI memory to Linux > > To reserve the memory resource in boot phase and open them for OS phase, > after create system resource hob, we can create memory allocation hob to take > some range in PEI phase. Then, these ranges will not be allocated in DXE > phase, > but they will still be reported in UEFI memory map. So, for this case, I > suggest to > create memory hob instead of resource hob with non present memory attribute. > > Thanks > Liming > > -----Original Message----- > > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > > Meenakshi Aggarwal > > Sent: Tuesday, September 19, 2017 8:32 PM > > To: edk2-devel@lists.01.org; leif.lindh...@linaro.org; > > ard.biesheu...@linaro.org > > Subject: [edk2] [PATCH v2] PeiLib : Inform UEFI memory to Linux > > > > While creating Hob list, ArmPlatformPkg is hiding UEFI memory. > > whereas this memory can be used by OS. > > > > This patch, allows OS to use UEFI code area. > > > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Udit Kumar <udit.ku...@nxp.com> > > Signed-off-by: Meenakshi Aggarwal <meenakshi.aggar...@nxp.com> > > --- > > ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c | 69 > > ------------------------- > > 1 file changed, 69 deletions(-) > > > > diff --git a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c > > b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c > > index 2feb11f..d03214b 100644 > > --- a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c > > +++ b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c > > @@ -70,11 +70,7 @@ MemoryPeim ( > > { > > ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable; > > EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttributes; > > - UINT64 ResourceLength; > > EFI_PEI_HOB_POINTERS NextHob; > > - EFI_PHYSICAL_ADDRESS FdTop; > > - EFI_PHYSICAL_ADDRESS SystemMemoryTop; > > - EFI_PHYSICAL_ADDRESS ResourceTop; > > BOOLEAN Found; > > > > // Get Virtual Memory Map from the Platform Library @@ -121,71 > > +117,6 @@ MemoryPeim ( > > ); > > } > > > > - // > > - // Reserved the memory space occupied by the firmware volume > > - // > > - > > - SystemMemoryTop = (EFI_PHYSICAL_ADDRESS)PcdGet64 > > (PcdSystemMemoryBase) + (EFI_PHYSICAL_ADDRESS)PcdGet64 > > (PcdSystemMemorySize); > > - FdTop = (EFI_PHYSICAL_ADDRESS)PcdGet64 (PcdFdBaseAddress) + > > (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdFdSize); > > - > > - // EDK2 does not have the concept of boot firmware copied into > > DRAM. To avoid the DXE > > - // core to overwrite this area we must mark the region with the > > attribute non-present > > - if ((PcdGet64 (PcdFdBaseAddress) >= PcdGet64 (PcdSystemMemoryBase)) && > (FdTop <= SystemMemoryTop)) { > > - Found = FALSE; > > - > > - // Search for System Memory Hob that contains the firmware > > - NextHob.Raw = GetHobList (); > > - while ((NextHob.Raw = GetNextHob > (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, NextHob.Raw)) != NULL) { > > - if ((NextHob.ResourceDescriptor->ResourceType == > EFI_RESOURCE_SYSTEM_MEMORY) && > > - (PcdGet64 (PcdFdBaseAddress) >= NextHob.ResourceDescriptor- > >PhysicalStart) && > > - (FdTop <= NextHob.ResourceDescriptor->PhysicalStart + > NextHob.ResourceDescriptor->ResourceLength)) > > - { > > - ResourceAttributes = NextHob.ResourceDescriptor->ResourceAttribute; > > - ResourceLength = NextHob.ResourceDescriptor->ResourceLength; > > - ResourceTop = NextHob.ResourceDescriptor->PhysicalStart + > ResourceLength; > > - > > - if (PcdGet64 (PcdFdBaseAddress) == NextHob.ResourceDescriptor- > >PhysicalStart) { > > - if (SystemMemoryTop == FdTop) { > > - NextHob.ResourceDescriptor->ResourceAttribute = > > ResourceAttributes > & ~EFI_RESOURCE_ATTRIBUTE_PRESENT; > > - } else { > > - // Create the System Memory HOB for the firmware with the non- > present attribute > > - BuildResourceDescriptorHob (EFI_RESOURCE_SYSTEM_MEMORY, > > - ResourceAttributes & > ~EFI_RESOURCE_ATTRIBUTE_PRESENT, > > - PcdGet64 (PcdFdBaseAddress), > > - PcdGet32 (PcdFdSize)); > > - > > - // Top of the FD is system memory available for UEFI > > - NextHob.ResourceDescriptor->PhysicalStart += > > PcdGet32(PcdFdSize); > > - NextHob.ResourceDescriptor->ResourceLength -= > PcdGet32(PcdFdSize); > > - } > > - } else { > > - // Create the System Memory HOB for the firmware with the non- > present attribute > > - BuildResourceDescriptorHob (EFI_RESOURCE_SYSTEM_MEMORY, > > - ResourceAttributes & > ~EFI_RESOURCE_ATTRIBUTE_PRESENT, > > - PcdGet64 (PcdFdBaseAddress), > > - PcdGet32 (PcdFdSize)); > > - > > - // Update the HOB > > - NextHob.ResourceDescriptor->ResourceLength = PcdGet64 > (PcdFdBaseAddress) - > > NextHob.ResourceDescriptor->PhysicalStart; > > - > > - // If there is some memory available on the top of the FD then > > create a > HOB > > - if (FdTop < NextHob.ResourceDescriptor->PhysicalStart + > ResourceLength) { > > - // Create the System Memory HOB for the remaining region (top > > of the > FD) > > - BuildResourceDescriptorHob (EFI_RESOURCE_SYSTEM_MEMORY, > > - ResourceAttributes, > > - FdTop, > > - ResourceTop - FdTop); > > - } > > - } > > - Found = TRUE; > > - break; > > - } > > - NextHob.Raw = GET_NEXT_HOB (NextHob); > > - } > > - > > - ASSERT(Found); > > - } > > - > > // Build Memory Allocation Hob > > InitMmu (MemoryTable); > > > > -- > > 1.9.1 > > > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel