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: [email protected] <[email protected]> On Behalf Of Sean Rhodes
> Sent: Thursday, February 10, 2022 1:28 PM
> To: [email protected]
> Cc: Dong, Eric <[email protected]>; Patrick Rudolph 
> <[email protected]>
> Subject: [edk2-devel] [PATCH 16/18] UefiCpuPkg: Disable MTRR programming for 
> UefiPayloadPkg
> 
> From: Patrick Rudolph <[email protected]>
> 
> The MTRRs have already been programmed by FSB.
> 
> Signed-off-by: Patrick Rudolph <[email protected]>
> ---
>  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: [email protected]
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
> -=-=-=-=-=-=
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#86592): https://edk2.groups.io/g/devel/message/86592
Mute This Topic: https://groups.io/mt/89056162/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to