Hi Sean,
Setting all memory as tested in PEI is a workaround for the issue that this 
patch addresses.  However, promoting all memory in PEI is not a workable 
solution for BIOSes that incorporate full memory testing functionality, as this 
relies on the tested flag to determine which memory regions to test.

This patch addresses a discrepancy in EDK2 core regarding how untested memory 
is treated for allocation by DXE drivers.  In the case where a DXE driver does 
not request a specific memory region DXE Core will promote untested memory if 
necessary to provide memory to the driver.  In the case where a DXE driver 
requests a specific memory range of untested memory, DXE Core will currently 
return an error instead of promoting untested memory to make the region 
available for the driver.

Thanks,
Stacy

-----Original Message-----
From: Kinney, Michael D <michael.d.kin...@intel.com> 
Sent: Tuesday, January 11, 2022 10:57 AM
To: devel@edk2.groups.io; spbro...@outlook.com; Gao, Liming 
<gaolim...@byosoft.com.cn>; Howell, Stacy <stacy.how...@intel.com>; Kinney, 
Michael D <michael.d.kin...@intel.com>
Cc: Bi, Dandan <dandan...@intel.com>
Subject: RE: 回复: [edk2-devel] [PATCH] MdeModulePkg\CoreDxe: Allow DXE Drivers 
to use untested memory

Hi Sean,

The auto promotion of memory was only intended as a dev/debug feature to 
maximize platform boot without having to tune what memory is tested in PEI 
phase.

In my opinion, a production platform should never trigger any auto promotions 
of untested to tested memory, and part of production validation should make 
sure this event never occurs in any production boot scenarios.

The specific bug being fix here is that auto promotion was not symmetric across 
all memory allocation types.  It simply aligns this dev/debug feature.

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Sean
> Sent: Monday, January 10, 2022 6:47 PM
> To: devel@edk2.groups.io; Gao, Liming <gaolim...@byosoft.com.cn>; 
> Howell, Stacy <stacy.how...@intel.com>
> Cc: Bi, Dandan <dandan...@intel.com>
> Subject: Re: 回复: [edk2-devel] [PATCH] MdeModulePkg\CoreDxe: Allow DXE 
> Drivers to use untested memory
> 
> if this is auto promotion is happening in the core then what is the
> value of memory testing and tracking that state.   Is memory testing
> state a necessary feature of the Dxe Core?
> 
> 
> I think it makes more sense that if you platform wants to use a given 
> range your platform should either test it and/or mark it as tested.
> 
> OR
> 
> The dxe core should do away with the memory testing tracking.
> 
> 
> On most platforms i have seen in the past few years all memory is 
> marked as tested without doing any testing.  The only value in the 
> flag is keep the initial memory allocations in a given low range (below 4gb).
> 
> 
> 
> 
> On 1/10/2022 5:59 PM, gaoliming wrote:
> > Stacy:
> >    This fix covers the case with AllocateAddress allocation type. I 
> > agree this fix. Reviewed-by: Liming Gao <gaolim...@byosoft.com.cn>
> >
> > Thanks
> > Liming
> >> -----邮件原件-----
> >> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Stacy Howell
> >> 发送时间: 2022年1月8日 3:36
> >> 收件人: devel@edk2.groups.io
> >> 抄送: Stacy Howell <stacy.how...@intel.com>; Dandan Bi 
> >> <dandan...@intel.com>; Liming Gao <gaolim...@byosoft.com.cn>
> >> 主题: [edk2-devel] [PATCH] MdeModulePkg\CoreDxe: Allow DXE Drivers to 
> >> use untested memory
> >>
> >> REF: https://https://bugzilla.tianocore.org/show_bug.cgi?id=3795
> >> CC: Dandan Bi <dandan...@intel.com>
> >> CC: Liming Gao <gaolim...@byosoft.com.cn>
> >>
> >> Updated CoreInternalAllocatePages() to call PromoteMemoryResource() 
> >> and re-attempt the allocation if unable to convert the specified 
> >> memory range
> >>
> >> Signed-off-by: Stacy Howell <stacy.how...@intel.com>
> >> ---
> >>   MdeModulePkg/Core/Dxe/Mem/Page.c | 14 ++++++++++++++
> >>   1 file changed, 14 insertions(+)
> >>
> >> diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c
> >> b/MdeModulePkg/Core/Dxe/Mem/Page.c
> >> index 47d4c5d92e..cc0b90ac0d 100644
> >> --- a/MdeModulePkg/Core/Dxe/Mem/Page.c
> >> +++ b/MdeModulePkg/Core/Dxe/Mem/Page.c
> >> @@ -1417,6 +1417,20 @@ CoreInternalAllocatePages (
> >>       Status = CoreConvertPages (Start, NumberOfPages, MemoryType);
> >>     }
> >>
> >> +  if (EFI_ERROR (Status)) {
> >> +    //
> >> +    // If requested memory region is unavailable it may be 
> >> + untested
> >> memory
> >> +    // Attempt to promote memory resources, then re-attempt the
> >> allocation
> >> +    //
> >> +    if (PromoteMemoryResource ()) {
> >> +      if (NeedGuard) {
> >> +        Status = CoreConvertPagesWithGuard (Start, NumberOfPages,
> >> MemoryType);
> >> +      } else {
> >> +        Status = CoreConvertPages (Start, NumberOfPages, MemoryType);
> >> +      }
> >> +    }
> >> +  }
> >> +
> >>   Done:
> >>     CoreReleaseMemoryLock ();
> >>
> >> --
> >> 2.32.0.windows.2
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
> >
> >
> >
> >
> >
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#85717): https://edk2.groups.io/g/devel/message/85717
Mute This Topic: https://groups.io/mt/88340321/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to