Hi Mike,
I don't see this covered by the PI specification (it's soo huge).
Which chapter describes this?
The original issue was a boot hang observed on real hardware as the
MtrrLib can't handle
specific corner cases. Not calling into MtrrLib fixes the issue.

An alternative approach would be to fix the corner case handling, or
introduce and use a MtrrLibNull where necessary.

Regards,
Patrick Rudolph

On Thu, Feb 10, 2022 at 11:06 PM Michael D Kinney
<michael.d.kin...@intel.com> wrote:
>
> Hi Sean,
>
> By disabling the MTRR lib in this way, the UefiPayloadPkg has no means to
> adjust cachability if it needs to in the future, and it breaks conformance
> with the PI Specification.
>
> What modules in the UefiPayloadPkg are changing cachability?  Is that 
> appropriate?
> Should those modules be updates to not make those requests instead?
>
> Just want to know if this alternate method of preventing MTRR changes was
> evaluated.
>
> Thanks,
>
> Mike
>
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Sean Rhodes
> > Sent: Thursday, February 10, 2022 1:28 PM
> > To: devel@edk2.groups.io
> > Cc: Dong, Eric <eric.d...@intel.com>; Patrick Rudolph 
> > <patrick.rudo...@9elements.com>
> > Subject: [edk2-devel] [PATCH 16/18] UefiCpuPkg: Disable MTRR programming 
> > for UefiPayloadPkg
> >
> > From: Patrick Rudolph <patrick.rudo...@9elements.com>
> >
> > The MTRRs have already been programmed by FSB.
> >
> > Signed-off-by: Patrick Rudolph <patrick.rudo...@9elements.com>
> > ---
> >  UefiCpuPkg/Library/MtrrLib/MtrrLib.c   | 4 ++++
> >  UefiCpuPkg/Library/MtrrLib/MtrrLib.inf | 2 +-
> >  UefiCpuPkg/UefiCpuPkg.dec              | 4 ++++
> >  UefiCpuPkg/UefiCpuPkg.uni              | 8 ++++++--
> >  UefiPayloadPkg/UefiPayloadPkg.dsc      | 4 ++++
> >  5 files changed, 19 insertions(+), 3 deletions(-)
> >
> > diff --git a/UefiCpuPkg/Library/MtrrLib/MtrrLib.c 
> > b/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
> > index e5c862c83d..8734bae2f0 100644
> > --- a/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
> > +++ b/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
> > @@ -2845,6 +2845,10 @@ IsMtrrSupported (
> >    CPUID_VERSION_INFO_EDX     Edx;
> >
> >    MSR_IA32_MTRRCAP_REGISTER  MtrrCap;
> >
> >
> >
> > +  if (PcdGetBool (PcdCpuDisableMtrrProgramming)) {
> >
> > +    return FALSE;
> >
> > +  }
> >
> > +
> >
> >    //
> >
> >    // Check CPUID(1).EDX[12] for MTRR capability
> >
> >    //
> >
> > diff --git a/UefiCpuPkg/Library/MtrrLib/MtrrLib.inf 
> > b/UefiCpuPkg/Library/MtrrLib/MtrrLib.inf
> > index 4c9ea2def3..afc0bcc724 100644
> > --- a/UefiCpuPkg/Library/MtrrLib/MtrrLib.inf
> > +++ b/UefiCpuPkg/Library/MtrrLib/MtrrLib.inf
> > @@ -15,7 +15,6 @@
> >    VERSION_STRING                 = 1.0
> >
> >    LIBRARY_CLASS                  = MtrrLib
> >
> >
> >
> > -
> >
> >  #
> >
> >  # The following information is for reference only and not required by the 
> > build tools.
> >
> >  #
> >
> > @@ -37,4 +36,5 @@
> >
> >
> >  [Pcd]
> >
> >    gUefiCpuPkgTokenSpaceGuid.PcdCpuNumberOfReservedVariableMtrrs   ## 
> > SOMETIMES_CONSUMES
> >
> > +  gUefiCpuPkgTokenSpaceGuid.PcdCpuDisableMtrrProgramming          ## 
> > CONSUMES
> >
> >
> >
> > diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec
> > index 7de66fde67..a2a4ecc094 100644
> > --- a/UefiCpuPkg/UefiCpuPkg.dec
> > +++ b/UefiCpuPkg/UefiCpuPkg.dec
> > @@ -217,6 +217,10 @@
> >    # @Prompt SMM Code Access Check.
> >
> >    
> > gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmCodeAccessCheckEnable|TRUE|BOOLEAN|0x60000013
> >
> >
> >
> > +  ## Disables MTRR programming in case it's already programmed by FSB.
> >
> > +  # @Prompt Disable MTRR programming.
> >
> > +  
> > gUefiCpuPkgTokenSpaceGuid.PcdCpuDisableMtrrProgramming|FALSE|BOOLEAN|0x00000017
> >
> > +
> >
> >    ## Specifies the number of variable MTRRs reserved for OS use. The 
> > default number of
> >
> >    #  MTRRs reserved for OS use is 2.
> >
> >    # @Prompt Number of reserved variable MTRRs.
> >
> > diff --git a/UefiCpuPkg/UefiCpuPkg.uni b/UefiCpuPkg/UefiCpuPkg.uni
> > index 219c1963bf..3db0063f50 100644
> > --- a/UefiCpuPkg/UefiCpuPkg.uni
> > +++ b/UefiCpuPkg/UefiCpuPkg.uni
> > @@ -140,9 +140,13 @@
> >
> >
> >  #string STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuHotPlugDataAddress_HELP  
> > #language en-US "Contains the pointer to a CPU Hot Plug
> > Data structure if CPU hot-plug is supported."
> >
> >
> >
> > -#string 
> > STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuNumberOfReservedVariableMtrrs_PROMPT  
> > #language en-US "Number of reserved variable
> > MTRRs"
> >
> > +#string STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuDisableMtrrProgramming_PROMPT  
> > #language en-US "Number of reserved variable MTRRs"
> >
> >
> >
> > -#string 
> > STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuNumberOfReservedVariableMtrrs_HELP  
> > #language en-US "Specifies the number of
> > variable MTRRs reserved for OS use."
> >
> > +#string STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuDisableMtrrProgramming_HELP  
> > #language en-US "Specifies the number of variable
> > MTRRs reserved for OS use."
> >
> > +
> >
> > +#string 
> > STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuNumberOfReservedVariableMtrrs_PROMPT  
> > #language en-US "Disable MTRR programming."
> >
> > +
> >
> > +#string 
> > STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuNumberOfReservedVariableMtrrs_HELP  
> > #language en-US "Disables MTRR programming in
> > case it's already programmed by FSB."
> >
> >
> >
> >  #string STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuApLoopMode_PROMPT  #language 
> > en-US "The AP wait loop state"
> >
> >
> >
> > diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc 
> > b/UefiPayloadPkg/UefiPayloadPkg.dsc
> > index c8562d592b..afec9109c1 100644
> > --- a/UefiPayloadPkg/UefiPayloadPkg.dsc
> > +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
> > @@ -37,6 +37,7 @@
> >    DEFINE BOOT_MANAGER_ESCAPE          = FALSE
> >
> >    DEFINE BOOTSPLASH_IMAGE             = FALSE
> >
> >    DEFINE FOLLOW_BGRT_SPEC             = FALSE
> >
> > +  DEFINE MTRR_PROGRAMMING             = TRUE
> >
> >    DEFINE PLATFORM_BOOT_TIMEOUT        = 3
> >
> >    #
> >
> >    # SBL:      UEFI payload for Slim Bootloader
> >
> > @@ -412,6 +413,9 @@
> >
> >
> >    gUefiPayloadPkgTokenSpaceGuid.PcdAbove4GMemory|$(ABOVE_4G_MEMORY)
> >
> >
> >
> > +  # Disable MTRR programming
> >
> > +  
> > gUefiCpuPkgTokenSpaceGuid.PcdCpuDisableMtrrProgramming|$(MTRR_PROGRAMMING)
> >
> > +
> >
> >  [PcdsPatchableInModule.X64]
> >
> >    gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)
> >
> >    gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)
> >
> > --
> > 2.32.0
> >
> >
> >
> > -=-=-=-=-=-=
> > Groups.io Links: You receive all messages sent to this group.
> > View/Reply Online (#86587): https://edk2.groups.io/g/devel/message/86587
> > Mute This Topic: https://groups.io/mt/89056162/1643496
> > Group Owner: devel+ow...@edk2.groups.io
> > Unsubscribe: https://edk2.groups.io/g/devel/unsub 
> > [michael.d.kin...@intel.com]
> > -=-=-=-=-=-=
> >
>
>
>
> 
>
>


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


Reply via email to