Reviewed-by: Michael D Kinney <[email protected]>

> -----Original Message-----
> From: Ni, Ray <[email protected]>
> Sent: Tuesday, March 21, 2023 4:57 PM
> To: [email protected]
> Cc: Dong, Eric <[email protected]>; Kumar, Rahul R 
> <[email protected]>; Gerd Hoffmann <[email protected]>; Kinney,
> Michael D <[email protected]>; Anadani, Ahmad 
> <[email protected]>
> Subject: [PATCH 3/6] UefiCpuPkg/MtrrLib: Substract TME-MK KEY_ID_BITS from 
> CPU max PA
> 
> CPUID enumeration of MAX_PA is unaffected by TME-MK activation and
> will continue to report the maximum physical address bits available
> for software to use, irrespective of the number of KeyID bits.
> 
> So, we need to check if TME is enabled and adjust the PA size
> accordingly.
> 
> Signed-off-by: Ray Ni <[email protected]>
> Cc: Eric Dong <[email protected]>
> Cc: Rahul Kumar <[email protected]>
> Cc: Gerd Hoffmann <[email protected]>
> Cc: Michael D Kinney <[email protected]>
> Cc: Ahmad Anadani <[email protected]>
> ---
>  UefiCpuPkg/Library/MtrrLib/MtrrLib.c | 24 ++++++++++++++++++++++--
>  1 file changed, 22 insertions(+), 2 deletions(-)
> 
> diff --git a/UefiCpuPkg/Library/MtrrLib/MtrrLib.c 
> b/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
> index e5c862c83d..a66357e305 100644
> --- a/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
> +++ b/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
> @@ -756,8 +756,11 @@ MtrrLibInitializeMtrrMask (
>    OUT UINT64  *MtrrValidAddressMask
> 
>    )
> 
>  {
> 
> -  UINT32                          MaxExtendedFunction;
> 
> -  CPUID_VIR_PHY_ADDRESS_SIZE_EAX  VirPhyAddressSize;
> 
> +  UINT32                                       MaxExtendedFunction;
> 
> +  CPUID_VIR_PHY_ADDRESS_SIZE_EAX               VirPhyAddressSize;
> 
> +  UINT32                                       MaxFunction;
> 
> +  CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_ECX  ExtendedFeatureFlagsEcx;
> 
> +  MSR_IA32_TME_ACTIVATE_REGISTER               TmeActivate;
> 
> 
> 
>    AsmCpuid (CPUID_EXTENDED_FUNCTION, &MaxExtendedFunction, NULL, NULL, NULL);
> 
> 
> 
> @@ -767,6 +770,23 @@ MtrrLibInitializeMtrrMask (
>      VirPhyAddressSize.Bits.PhysicalAddressBits = 36;
> 
>    }
> 
> 
> 
> +  //
> 
> +  // CPUID enumeration of MAX_PA is unaffected by TME-MK activation and will 
> continue
> 
> +  // to report the maximum physical address bits available for software to 
> use,
> 
> +  // irrespective of the number of KeyID bits.
> 
> +  // So, we need to check if TME is enabled and adjust the PA size 
> accordingly.
> 
> +  //
> 
> +  AsmCpuid (CPUID_SIGNATURE, &MaxFunction, NULL, NULL, NULL);
> 
> +  if (MaxFunction >= CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS) {
> 
> +    AsmCpuidEx (CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS, 0, NULL, NULL, 
> &ExtendedFeatureFlagsEcx.Uint32, NULL);
> 
> +    if (ExtendedFeatureFlagsEcx.Bits.TME_EN == 1) {
> 
> +      TmeActivate.Uint64 = AsmReadMsr64 (MSR_IA32_TME_ACTIVATE);
> 
> +      if (TmeActivate.Bits.TmeEnable == 1) {
> 
> +        VirPhyAddressSize.Bits.PhysicalAddressBits -= 
> TmeActivate.Bits.MkTmeKeyidBits;
> 
> +      }
> 
> +    }
> 
> +  }
> 
> +
> 
>    *MtrrValidBitsMask    = LShiftU64 (1, 
> VirPhyAddressSize.Bits.PhysicalAddressBits) - 1;
> 
>    *MtrrValidAddressMask = *MtrrValidBitsMask & 0xfffffffffffff000ULL;
> 
>  }
> 
> --
> 2.39.1.windows.1



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


Reply via email to