On Mon, Apr 06, 2020 at 10:08:43 +0000, Pankaj Bansal (OSS) wrote:
>
> > > +
> > > + FdBase = (UINTN)FixedPcdGet64 (PcdFdBaseAddress);
> > > + FdTop = FdBase + (UINTN)FixedPcdGet32 (PcdFdSize);
> > > +
> > > + // Declare memory regios to system
> >
> > regions
>
> OK
>
> >
> > > + for (Index = MAX_DRAM_REGIONS - 1; Index >= 0; Index--) {
> >
> > I guess what confuses me about this loop is the combination of:
> > - Iterating over the DRAM regions backwards (optimization?)
> > - Not terminating the iteration once all of the Fd region has been
> > covered (the opposite of optimization).
> >
> > Could something be done about that?
> >
>
> The DRAM region info is sorted based on the RAM address is SOC memory map.
> i.e. region0 is at lower address, as compared to region1.
> The goal to start from last region is to find the topmost RAM region that can
> contain UEFI DXE region i.e. PcdSystemMemoryUefiRegionSize.
> In the upcoming patches I would update the PcdSystemMemoryBase dynamically
> from that region.
> If UEFI were to allocate any reserved or runtime region, it would be
> allocated from topmost RAM region.
> This ensures that maximum amount of lower RAM (32 bit addresses) are left for
> OS to allocate to devices that can only
> work with 32bit physical addresses. E.g. legacy devices that need to DMA to
> 32bit addresses.
OK, that's (sadly) a good reason. Can it be explained in a comment?
/
Leif
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#56981): https://edk2.groups.io/g/devel/message/56981
Mute This Topic: https://groups.io/mt/72077425/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-