I'm using the defaults from the (now deleted) 2ndstage sample dsc: gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0 gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS|0 gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType|0 gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|50 gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|20 gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesCode|400 gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesData|20000 gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderCode|20 gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderData|0
I figured that the PrePi's stack setup may cause this, especially since I'm using all the memory up to 0xFFFFFFFF+1 which causes the logic to ignore the last page(I think). I'm now using PcdSystemMemorySize - PcdFdSize - EFI_PAGE_SIZE which seems to work pretty good even though the "missing" memory was just like 900bytes and not 4096. Thanks Michael On Mon, Aug 8, 2016 at 10:50 AM, Ard Biesheuvel <ard.biesheu...@linaro.org> wrote: > On 6 August 2016 at 13:05, Michael Zimmermann <sigmaepsilo...@gmail.com> > wrote: > > Hi, > > > > I have some problems with my current setup and would like to ask you for > the > > best way to configure the following setup: > > - I'm using PrePi, I don't need relocations because the loading address > is > > fixed(0xfe000000) > > - The SystemMemory address range is unknown at compile time > > - the system-memory consists of multiple ranges with holes so providing > just > > a base and a size is not enough > > - There's no NOR, edk2 gets loaded into dram > > > > my current setup: > > PcdSystemMemoryBase = loading addr(0xfe000000) > > PcdSystemMemorySize = 32MB > > FD_BASE = PcdSystemMemoryBase > > FD_SIZE = 4MB > > in ArmPlatformGetVirtualMemoryMap I call BuildResourceDescriptorHob for > all > > DRAM memory ranges. > > In PrePiMain after MemoryPeim I call BuildMemoryAllocationHob for some > > reserved memory ranges > > > > After running into out-of-memory errors during PrePi when using bigger > FV's > > I revisited everything and came across a PCD I somehow never looked at > when > > setting up my platform a year ago: PcdSystemMemoryUefiRegionSize. > > this was hardcoded to 0x00e00000 which obviously caused allocation errors > > while extracting big FV's even though PcdSystemMemorySize was big enough. > > > > Since there already was this nice comment 'PcdSystemMemorySize - > PcdFdSize' > > I did exactly that: 32MB-4MB = 28MB. > > Unfortunately after doing that MdeModulePkg/Core/Dxe/Gcd/Gcd.c starts > > bugging that he can't find a resource hob that contains the PHIT Hob. > > > > Could you check the > > gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiXXX|nnnn > > definitions in your .DSC? Fairly recently, the core code was modified > to use the sum of these definitions as an estimate of the minimally > required allocation size, and it broke some other platforms in a > similar way. > > > So now that my setup and problems are clear, the questions: > > - Is it ok to define ResourceHob's that cover the PcdSystemMemory range? > > - what can I do to fix the PHIT Hob problem? should PcdFdSize + > > PcdSystemMemoryUefiRegionSize be smaller than PcdSystemMemorySize ? > > - I took a quick look at ArmVirt where they change the PcdSystemMemory > range > > at runtime, but they use lots of custom code like their own MemoryPeiLib, > > and I think everything but Xen uses PEIM instead of PrePi. Also as I > said I > > have more than one range so this would work anyway. > > > > ArmVirtQemu uses PEIM, since it runs from [emulated] NOR flash. > ArmVirtQemuKernel and ArmVirtXen use PrePi (the former is simply > ArmVirtQemu with the FD executing from DRAM, using the QEMU '-kernel' > option) > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel